Domanda

Ho un server di produzione in esecuzione con il seguente flag: - XX: + HeapDumpOnOutOfMemoryError

Ieri sera ha generato un file java-38942.hprof quando il nostro server ha riscontrato un errore heap. Si scopre che gli sviluppatori del sistema conoscevano la bandiera ma non c'era modo di ottenere informazioni utili da essa.

Qualche idea?

È stato utile?

Soluzione

Se vuoi uno strumento abbastanza avanzato per dare un'occhiata seria in giro, guarda il progetto Memory Analyzer a Eclipse, ha contribuito con loro da SAP.

Alcune delle cose che puoi fare sono straordinariamente buone per trovare perdite di memoria, ecc. - incluso l'esecuzione di una forma di SQL limitato (OQL) contro gli oggetti in memoria, ad esempio

  

SELEZIONA toString (nome) DA com.yourcompany.somepackage.User

Totalmente geniale.

Altri suggerimenti

Puoi utilizzare JHAT , The Java Heap Analysis Tool fornito di default con JDK. È la riga di comando ma avvia un server Web / browser che usi per esaminare la memoria. Non è il più facile da usare, ma almeno è già installato nella maggior parte dei luoghi in cui andrai. Una vista molto utile è l'istogramma "heap" link in fondo.

ex: jhat -port 7401 -J-Xmx4G dump.hprof

jhat può eseguire OQL "in questi giorni" anche (link in basso " esegui OQL ")

Puoi anche utilizzare HeapWalker dal Netbeans Profiler o dal < a href = "https://visualvm.github.io/" rel = "noreferrer"> Visual VM strumento autonomo. Visual VM è una buona alternativa a JHAT in quanto è indipendente, ma è molto più facile da usare rispetto a JHAT.

Per utilizzare completamente Visual VM è necessario Java 6+.

Scarica Eclipse Memory Analyzer . Non c'è niente di meglio là fuori ed è gratuito.

JHAT è utilizzabile solo per "applicazioni giocattolo"

Anche YourKit Java Profiler sembra gestirli.

Se vuoi fare un'analisi personalizzata del tuo heapdump, allora c'è:

Questa libreria è veloce ma dovrai scrivere il tuo codice di analisi in Java.

Dai documenti:

  • Non crea alcun file temporaneo sul disco per elaborare il dump dell'heap
  • Può funzionare direttamente dump di heap compressi GZ
  • Notazione HeapPath
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top