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

时间:2015-12-02 21:05:03

标签: java memory snapshot visualvm

问题

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

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

enter image description here

当我右键单击int[]并选择拍摄快照和显示分配堆栈跟踪时,我的应用程序将关闭并弹出一个警告框,说明无法获取结果快照。申请已终止

  

enter image description here

我在这个主题上发现的最接近的是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

崩溃日志的大小超出了字符数限制,因此我不得不将其放在其他位置。遗憾。

1 个答案:

答案 0 :(得分:7)

确定。因此,基于获得的崩溃日志,您似乎遇到了已经报告的 VisualVM错误

JVM being profiled crashes

原始bug的提交者将此行为缩小到Java8,因此您最好的机会是在较旧的(Java7)运行时上运行VisualVM。如果这是一个选项,那么您只需要下载Java7 JDK并直接从那里运行VisualVM。