我們在運行Java應用程序的虛擬機上存在一些內存泄漏問題,舊Gen堆的使用量每天都在快速增長,所以我想創建堆轉儲來分析它。可以創建堆轉儲分析內存泄漏沒有垃圾收集?
但是,我注意到VisualVM將在堆轉儲之前執行完整的GC,這將清理舊的代碼,在這種情況下,堆轉儲將毫無用處。
我也試着用下面的命令:
JMAP轉儲:現場,格式= B,文件= heap.bin
它也將觸發一個完整的GC。
我可以問,如果沒有完整的GC(或沒有GC)可以創建堆轉儲的方法嗎?或者有沒有更好的方法來分析內存泄漏?
JDK版本:1.7.0_45
謝謝。
我嘗試使用Mission Control並在VM上爲Flight Recorder添加-XX:+ UnlockCommercialFeatures -XX:+ FlightRecorder,但是我無法啓動應用程序。我收到錯誤消息說:「初始化JFR時出錯,JFR將被停用。java.lang.Exception:無法通過儀器Throwable! at oracle.jrockit.jfr.VMJFR.instrument(VMJFR.java:408) at oracle.jrockit .jfr.JFR.init(JFR.java:108)「 – zhengyu
請參閱http://stackoverflow.com/q/19056826/772000 –