我创建了一个从Eclipse运行的简单控制台应用程序(右键单击该文件并选择以Java应用程序运行。)我在那里睡了一觉,所以当我启动Aquire堆时我可以确保进程仍在运行转储对话框。我启动对话框,点击刷新,并且没有列出本地进程。
我检查了Eclipse的错误日志,它只报告列出IBM VM进程时出现问题(HPROF配置正常并正常工作。)
我做错了什么?
答案 0 :(得分:3)
为什么不从程序代码创建堆转储?
https://blogs.oracle.com/sundararajan/entry/programmatically_dumping_heap_from_java
或者当从这里遇到安全问题时: create heap dump from within application, without HotSpotDiagnosticMXBean
我在JUnit测试中经过一定数量的迭代后使用它来进行堆转储,剩下要做的就是打开Eclipse MAT中的转储并查找内存泄漏的原因: - (
答案 1 :(得分:0)
我遇到同样的问题,谷歌搜索后发现了这个解决方案。
在"获取头转储中指定jdk路径" - > "配置..." - >选择" HPROF jmap dump provider" - > " -jdkhome" - > speficy jdk路径默认情况下应该是 " C:\ Program Files \ Java \ jdk1.8.0_102"或者你的jdk位置。
我希望它适合你。