Ho provato questo Get a heapdump on JVM from Tomcat 6 ma non funziona per me, ci sono altri modi per ottenere il dump dell'heap dal server tomcat? Grazie in anticipo!modi come ottenere heap dump dall'esecuzione di tomcat 7
risposta
Il modo più semplice per ottenere heap dump è utilizzare jmap. Sulla macchina con processo java eseguire il comando jmap. Esempio di utilizzo:
jmap -dump:file=/mnt/heapdump_2013-04-01.data 29842
uso jps sapere java Pid.
Inoltre è possibile effettuare lo heap dump tramite jvisualvm. È possibile connettersi alla macchina remota tramite jmx o jstatd. È possibile eseguire heapdump e archiviare sul computer remoto.
Per analizzare i cumuli di heap è possibile avvisare: MAT. Strumento molto potente che ti consente di comprendere rapidamente i problemi. Puoi trovare here inro per il MAT.
Se non si vuole fermare l'applicazione per un lungo periodo si può fare dump binario (You can use gcore or gdb). E puoi use jmap to analyze gdb dump. Ulteriori informazioni sono disponibili su atlassian blog. Attenti allo someissues.
Potrebbe essere necessario utilizzare "sudo" – th3morg
Un altro modo oltre al "Dump heap" -Button di jvisualvm è tramite l'interfaccia JMX. In questo modo puoi persino specificare dove archiviare il dump.
connettersi al server JMX di tomcat utilizzando jconsole o jvisualvm con il plug-in JMX. Quindi ottenuto a com.sun.management
->HotSpotDiagnotic
->Operations
. Accanto a dumpHeap
inserisci i due parametri. Dalla documentazione di Oracle (vedi here):
Parametri:
OutputFile - Il nome del file dipendente dal sistema
dal vivo - se vera discarica solo vivere gli oggetti, vale a dire oggetti che sono raggiungibili dagli altri
Quindi premere dumpHeap
e osservare il blocco della macchina virtuale per un po 'di tempo durante la scrittura del dump.
Mi raccomando visual VM http://visualvm.java.net/ È uno strumento tutto in uno che può connettersi a tomcat, creare e leggere heap dump, creare dump di thread, cpu e campionatore di memoria.
Se si utilizza il nuovo jdk 1.7, VisualVM è già contenuto nella cartella jdk.
Qual è il problema che hai incontrato nel tentativo di eseguire il dump dell'heap? – Taky
Il collegamento si limita a eseguire il dump dell'heap quando JVM si esaurisce a causa della memoria insufficiente. Non ti permette di fare heapdump, quando vuoi. Ma è ancora un'opzione molto utile per te. – Taky