2013-07-26 21 views
7

Di seguito sono riportate le istantanee che ho scattato dopo l'esecuzione di da GC da jvisualvm. Heap Stats e Permgen StatsPerché le dimensioni allocate di generazione permanente aumentano dopo l'esecuzione di GC?

prima immagine è Heap statistiche e 2 ° uno è perm gen statistiche. Non riesco a capire quando ho utilizzato GC nella dimensione dell'heap utilizzata diminuita (come previsto) ma la dimensione allocata della generazione permanente è aumentata (sebbene la dimensione di permgen utilizzata sia rimasta invariata). What could be the possible explanation of such behavior?

argomenti JVM usati

-Xbootclasspath/p:../xyz.jar 
-Xbootclasspath/a:../abc.jar 
-Djava.endorsed.dirs=../resolver 
-Djava.library.path=../framework 
-Djavax.management.builder.initial=JBeanServerBuilder 
-Djavax.net.ssl.trustStore=../certs 
-Dorg.mortbay.log.class=JettyLogger 
-Xms128m 
-Xmx256m 
-Xdebug 
-Xnoagent 
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=2000 

Nota: ho cambiato il nome (ex xyz.jar) per motivi di correttezza.

JVM Info:

JVM: Java HotSpot(TM) 64-Bit Server VM (23.6-b04, mixed mode) 
Java: version 1.7.0_11, vendor Oracle Corporation 
Java Home: /home/aniket/jdk1.7.0_11/jre 
JVM Flags: <none> 
+4

direi che il GC rivaluta le varie dimensioni che ha da controllare come parte del percorso di raccolta. Quindi potrebbe decidere che è un po 'stretto sul lato del genoma delle cose e un aumento. –

+0

Quale VM/gc si usa, con quali parametri si avvia la VM? –

+0

@JensSchauder: questa è probabilmente la migliore risposta possibile per questa domanda senza molte speculazioni sugli interni di HotSpot ... –

risposta

3
  • Gli spazi di heap di allocazione della memoria/Perm/Eden/Young/S1/S2 ecc. Dipendono dall'algoritmo sottostante utilizzato per GC.
  • L'allocazione della memoria agli spazi sopra indicati non è definita come parametro dei valori assoluti. Sono definiti come rapporti sul totale heap/perm disponibili per JVM.
  • Sopra i due punti probabilmente si noti che quando la dimensione dell'Heap cambia, tutte le allocazioni di memoria a tutti gli spazi vengono rivalutate per mantenere il rapporto definito.

seguito collegamento sarà davvero utile:

http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html

1

dal momento che nessuno offre una risposta, io faccio il mio commento una risposta, anche se è un po 'vago:

direi che il GC rivaluta le varie dimensioni che deve controllare come parte della corsa di raccolta. Quindi potrebbe decidere che è un po 'stretto sul lato del genoma delle cose e un aumento.