我们在运行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 –