Abbiamo alcuni problemi di perdita di memoria sulle macchine virtuali in produzione che eseguono applicazioni Java, l'utilizzo dell'heap di Old Gen cresce rapidamente ogni giorno, quindi voglio creare il dump dell'heap per analizzarlo.È possibile creare un dump di heap per analizzare la perdita di memoria senza garbage collection?
Tuttavia, ho notato che VisualVM eseguirà il GC completo prima del dump dell'heap che pulirà il vecchio gen, in tal caso, il dump dell'heap sarebbe inutile.
Ho anche cercato di utilizzare il seguente comando:
jmap dump: live, format = b, file = heap.bin
Sarà anche innescare un GC pieno.
Posso chiedere se esiste un modo in cui è possibile creare il dump dell'heap senza GC completo (o senza GC)? O c'è un modo migliore per analizzare la perdita di memoria?
versione del JDK: 1.7.0_45
Grazie.
Ho provato a utilizzare Mission Control e aggiungere -XX: + UnlockCommercialFeatures -XX: + FlightRecorder su VM per Flight Recorder, tuttavia, non è stato possibile avviare l'applicazione. Ho ricevuto un messaggio di errore che diceva "Errore durante l'inizializzazione del JFR. JFR verrà disattivato java.lang.Exception: Impossibile strumento Throwable! in oracle.jrockit.jfr.VMJFR.instrument (VMJFR.java:408) in oracle.jrockit .jfr.JFR.init (JFR.java:108) " – zhengyu
vedere http://stackoverflow.com/q/19056826/772000 –