La Sun JVM emette i registri GC dettagliati su StdOut quando vengono utilizzati i seguenti argomenti.Registri GC Java dettagliati
-verbose:gc
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
Tuttavia, non voglio l'output in stdout e ho davvero bisogno di dettaglio per ogni singolo GC. È possibile accedere ai dati utilizzati per questi registri in modo programmatico? Mi piacerebbe essere in grado di accedere al mio file di registro la quantità di memoria allocata/raccolta e idealmente la dimensione media dell'oggetto nel tempo.
Grazie per questo. Speravo che ci sarebbe stata un'API in modo da poter accedere a questi dati in fase di esecuzione e scrivere statistiche ogni 5 minuti sul volume di dati che sono stati assegnati, raccolti e promossi. – mchr
Un sacco di informazioni riguardanti la garbage collection sono rese disponibili tramite JMX, aprire 'jconsole' e controllare i diversi bean che espone una JVM. Ci sono diverse domande qui su SO per quanto riguarda JMX e GC pure. Se capisci in tedesco questo articolo e il relativo codice contengono alcune idee interessanti http://www.torsten-horn.de/techdocs/jmx-gc.htm – fvu
A partire da JVM 1.6.0_34 puoi fare in modo che java ruoti i log. '-XX: + UseGCLogFileRotation -XX: NumberOfGCLogFiles = XX: GCLogFileSize = ' Nota che tutte e tre le opzioni sono necessari. altri suggerimenti qui: http://jyates.github.io/2012/11/05/rolling-java-gc-logs.html –