2009-12-02 10 views
21

Ho un file Hprof da 6,5 ​​GB che è stato scaricato da una JVM a 64 bit utilizzando l'opzione -XX:-HeapDumpOnOutOfMemoryError. Ce l'ho seduto su una macchina da 16 GB a 64-bit, e sto cercando di farlo entrare in jhat, ma continua a rimanere senza memoria. Ho provato a passare in jvm args per le impostazioni minime, ma rifiuta qualsiasi minimo, e sembra esaurire la memoria prima di raggiungere il massimo.Caricamento di un hprof grande in jhat

Sembra un po 'sciocco che un jvm a corto di memoria scarichi un heap così grande da non poter essere caricato su una scatola con il doppio di ram. Ci sono dei modi per farlo funzionare, o magari di ammortizzare l'analisi?

+0

Vedere anche https://stackoverflow.com/questions/7254017/tool-for-analyzing-large-java-heap-dumps – rogerdpack

risposta

18

Vorrei dare un'occhiata allo eclipse memory analyzer. Questo strumento è fantastico, e ho visto molti heap Gig con questo strumento. La cosa bella dello strumento è che crea indici sul dump quindi non è tutto in memoria in una volta.

+1

Questo ha funzionato. In realtà l'ho provato prima con alcuni dump di heap più piccoli e in realtà non mi ha dato alcuna informazione utile, ma una volta che l'ho ottenuto con l'hprof HeapDumpOnOutOfMemoryError, alla fine ha evidenziato il problema esatto. – liam

+0

Sfortunatamente MAT ha ancora usato un bel po 'di RAM per me ["failure java heap space"], vedi http://stackoverflow.com/questions/7254017/tool-for-analyzing-large-java-heap-dumps – rogerdpack

0

Quali bandiere stai passando a jhat? Assicurati di essere in modalità a 64 bit e di impostare le dimensioni dell'heap abbastanza grandi.

13

Utilizzare l'equivalente di jhat -J-d64 -J-mx16g myheap.hprof come comando per avviare jhat, ad esempio, ciò avvierà jhat in modalità a 64 bit con una dimensione massima dell'heap di 16 gigabyte.

Se la JVM sulla piattaforma è impostata in modalità operativa a 64 bit, l'opzione -J-d64 non è necessaria.

4

Ho dovuto caricare un file hprof da 11 GB e non è riuscito con l'analizzatore di memoria Eclipse. Quello che ho finito è stato scrivere un programma per ridurre le dimensioni del file hprof rimuovendo a caso le informazioni di istanza. Una volta che ho ridotto la dimensione del file hprof a 1 GB, ho potuto aprirlo con l'analizzatore di memoria Eclipse e avere un'idea di cosa stava causando la perdita di memoria.

+11

condividere lo strumento o i dettagli su come scrivere uno simile? – BeeOnRope

Problemi correlati