显示分配堆栈跟踪时防止程序崩溃

Prevent program from crashing when showing allocation stack traces

问题

为什么 VisualVM 在尝试查看对象分配堆栈跟踪时终止我的程序,我该如何解决?


我正在清理一个有一些内存问题的应用程序,最大的问题是创建了一堆短暂的int[],这导致 GC 疯狂地触发:

当我右键单击 int[] 并选择 Take Snapshot and Show Allocation Stack Traces 时,我的应用程序关闭并弹出警告框 Failed获取结果快照。应用程序终止

我发现的与该主题最接近的是 recommended running my profiled application with -Xnoclassgc 的错误报告。没用,结果一样


规格

VisualVM: 1.8.0_60 (Build 1380-140910); platform 20140910-unknown-revn
Java: 1.8.0_60; Java HotSpot(TM) 64-Bit Server VM (25.60-b23, mixed mode)
Eclipse: Luna Release (4.4.0) Build id: 20140612-0600
System: Windows 7 (6.1) Service Pack 1, amd64 64bit

崩溃日志

http://pastebin.com/a4YPWutj

崩溃日志的大小超过了字符限制,所以我不得不把它放在别处。对不起。

好的。因此,根据获得的崩溃日志,您 运行 似乎陷入了 VisualVM 错误,此处已报告:

JVM being profiled crashes

原始错误的提交者将此行为缩小到 Java8,因此您最好的机会是 运行在较旧的 (Java7) [=24] 上安装 VisualVM =]时间。如果这是您的选择,那么您只需要直接从那里下载 Java7 JDK 和 运行 VisualVM。