Come posso vedere quale garbage collector (CMS, Parallel e così via) è in esecuzione guardando i log gc per le raccolte minori e maggiori? Non ho accesso alle opzioni della riga di comando impostate su java (il sysadm per l'appserver non mi consente di vederle). Ho dei registri gc piuttosto dettagliati.Come posso vedere cosa è in esecuzione il garbage collector guardando i log gc?
risposta
Il formato esatto dei messaggi GC dipende dalla versione di JVM e dalle impostazioni JVM. Puoi vedere i campioni allo Oracle tutorial about GC tuning.
DefNew
è un collettore predefinito. È seriale o parallela, che viene scelta dipende, di nuovo, dalla versione/impostazioni JVM. È possibile visualizzare le impostazioni predefinite in JDK 6 utilizzando java -XX:+PrintCommandLineFlags -version
. Sul mio sistema esso stampa:
-XX:MaxHeapSize=1073741824 -XX:ParallelGCThreads=4 -XX:+PrintCommandLineFlags -XX:+UseParallelGC
che significa GC parallela è DefNew
per me. È possibile controllare questo SO question e uno dei suoi riferimenti di risposte this table, potrebbe essere che ti aiuterà.
UPDATE Il GC di vecchia generazione predefinito in JDK 6 è ParallelOldGC, vedere this enlightening pdf. In particolare, è possibile modificare il GC di Old Gen in uno più recente in modalità Concorrent-mark-sweep utilizzando l'opzione JVM -XX:+UseConcMarkSweepGC
.
È possibile trovare esempi di registro GC per tutti gli algoritmi di garbage collection JSM HotSpot in this article.
-XX:+PrintGCDetails
deve essere abilitato per il livello di dettagli nel registro GC.
citando il libro "Java Performance" da Charlie Hunt, il nome dello spazio giovani generazioni utilizzato nei registri GC modifiche con il GC utilizzato:
PSYoungGen => ParallelGC
ParNew => CMS
DefNew => SerialGC
io non sono sicuro di G1
- 1. Il garbage collector è in esecuzione in un processo separato?
- 2. Più garbage collector in java
- 3. VBA Garbage Collector Dettagli
- 4. Quando viene eseguito il garbage collector .net?
- 5. Come disabilitare il garbage collector Java?
- 6. Il garbage collector chiama Dispose()?
- 7. Garbage Collector di monitoraggio in C#
- 8. LogManager e Garbage Collector
- 9. Python: comportamento del garbage collector
- 10. .NET Garbage Collector mystery
- 11. v8 | avviare manualmente il garbage collector
- 12. quando eseguo manualmente il garbage collector, come posso sapere quando è completato?
- 13. Garbage Collector non raccoglie immediatamente il thread finito
- 14. Quando il garbage collector raccoglierà un Singleton?
- 15. e il garbage collector Go
- 16. Precise mode in Boehm Garbage Collector
- 17. L'elisir ha un garbage collector?
- 18. Perché disabilitare il garbage collector?
- 19. Prestazioni relative di Garbage Collector (G1) Garbage First di Java?
- 20. Android Garbage Collector Freed Memory
- 21. Garbage collector tuning in Ruby 2.0
- 22. Eclipse: Pulsante Garbage Collector
- 23. JRuby - Come avviare il garbage collector?
- 24. Come richiedere il Garbage Collector in node.js per l'esecuzione?
- 25. Java fili e garbage collector
- 26. Cosa sono i fori GC?
- 27. Garbage collector .NET e memoria virtuale x64
- 28. GC completo non necessario con il garbage collector G1 in Java 8?
- 29. Quali Java Garbage Collector puliscono PermGen?
- 30. javascript Garbage Collector dispone di variabili globali?
I ho guardato questo documento ma non riesco a collegare DefNew, PSYoungGen o ParOldGen a specifici collezionisti. Dove posso trovare un tavolo di questo? – user1329339
Perché le generazioni non sono collegate a specifici raccoglitori. Ce n'è solo uno. È necessario leggere il modello GC generazionale e ottenere Visual VM in esecuzione: http://www.javaworld.com/javaworld/jw-01-2002/jw-0111-hotspotgc.html – duffymo
@duffymo: capisco che le generazioni non siano connesso con specifici collezionisti Dopo aver provato me stesso, penso di vedere che DefNew significa Serial Collector, ParNew significa CMS Collector e PSYoungGen significa Parallel Collector sulle giovani generazioni. Quello che sto cercando è una tabella di traduzione per tutte le opzioni. – user1329339