Domanda

Abbiamo un'applicazione server lungo in esecuzione in esecuzione Java 5, e profilatura di essa possiamo vedere la vecchia generazione che cresce lentamente nel tempo. E 'giustamente liberato su un GC pieno, ma mi piacerebbe essere in grado di guardare gli oggetti irraggiungibili in Eclipse MAT usando un heap dump. Ho ottenuto con successo un heap dump utilizzando + XX: HeapDumpOnCtrlBreak, ma la JVM fa sempre un GC prima di scaricare il mucchio. A quanto pare questo non accade su Java 6, ma siamo bloccati su 5 per ora. C'è un modo per evitare questo?

È stato utile?

Soluzione

Suggerisco un profiler 3rd-party come YourKit , che può consentire di scattare istantanee senza saltare via il primo GC. Aggiunto bonus, è possibile scattare una foto senza gli imbrogli tutto ctrl-break.

Altri suggerimenti

Usa jconsole o VisualVM o JMC o ... altro console di gestione JMX. aprire HotSpotDiagnostic in com.sun.management. Selezionare il metodo di dumpheap e l'ingresso di due parametri:

  • percorso del file di dump
  • (vero / falso) discarica solo gli oggetti dal vivo. utilizzare false per scaricare tutti gli oggetti.

Si noti che il file dump verrà scritto dalla JVM si è connessi, non per jvisualvm, quindi se la JVM è in esecuzione su un sistema differente, sarà scritto su quel sistema.

 entrare descrizione dell'immagine qui

Hai provato lo strumento jmap standard commercializzato con il JDK? Il bilancio jmap è stato ufficialmente introdotto in Java 5.

riga di comando Esempio: / Java / bin / jmap -heap: format = b

Il risultato può essere lavorato con lo strumento jhat standard o con applicazioni GUI come MAT.

Non ho certo codice qui che può programmazione prendere un heap dump su JMX:

Link: JmxHeapDumper.java

I commenti nel codice sorgente contengono 2 collegamenti ad articoli che contenevano informazioni utili su come prendere dump heap. Non lo so per certo, ma se siete fortunati, forse l'approccio JMX avrei qualche modo di evitare la GC. Spero che questo aiuta!

JProfiler ( ej-technologies ) può fare questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top