2013-01-22 14 views

risposta

43

È possibile utilizzare jstat, come:

jstat -gc pid 

documentazione completa qui: http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html

+0

Grazie sembra quello che voglio, potrebbe richiedere un po 'di tempo per capire tutte le opzioni, però, stavo cercando la quantità di heap utilizzata –

+2

quindi penso che OU sia la colonna chiave, con OC che mostra il massimo che era allocato –

+4

@PaulTaylor Volete le colonne UE e UO: aggiungendole si ottiene la quantità di heap utilizzata. L'aggiunta delle colonne EC e OC fornisce l'importo allocato per l'heap. – pacoverflow

8

se si inizia l'esecuzione con la registrazione gc attivata si ottiene le informazioni su file. Altrimenti 'jmap -heap' ti darà quello che vuoi. Vedere il jmap doc page per ulteriori informazioni.

prega di notare che jmap dovrebbe non essere utilizzato in un ambiente di produzione se non assolutamente necessario in quanto lo strumento ferma l'applicazione per essere in grado di determinare l'utilizzo effettivo mucchio. Di solito questo non è desiderato in un ambiente di produzione.

10

Per Java 8 è possibile utilizzare la seguente riga di comando per ottenere l'utilizzo dello spazio heap in kB:

jstat -gc <PID> | tail -n 1 | awk '{split($0,a," "); sum=a[3]+a[4]+a[6]+a[8]; print sum}' 

Il comando riassume praticamente fino:

  • S0U: Survivor spazio 0 utilizzo (kB).
  • S1U: utilizzo dello spazio superstite 1 (kB).
  • EU: utilizzo dello spazio Eden (kB).
  • OU: vecchio utilizzo dello spazio (kB).

Si potrebbe anche voler includere metaspace e l'utilizzo dello spazio di classe compresso. In questo caso devi aggiungere un [10] e un [12] alla somma di awk.

Problemi correlati