3

我的jmap命令是sudo -u flume /usr/java/jdk1.8.0_60/bin/jmap -F -dump:format=b,file=heap.hprof pid,但是 eclips mat 无法打开转储文件,并抛出异常。

java.lang.NullPointerException
    在 org.eclipse.mat.hprof.HprofParserHandlerImpl.resolveClassHierarchy(HprofParserHandlerImpl.java:587)
    在 org.eclipse.mat.hprof.Pass2Parser.readInstanceDump(Pass2Parser.java:205)
    在 org.eclipse.mat.hprof.Pass2Parser.readDumpSegments(Pass2Parser.java:159)
    在 org.eclipse.mat.hprof.Pass2Parser.read(Pass2Parser.java:89)
    在 org.eclipse.mat.hprof.HprofIndexBuilder.fill(HprofIndexBuilder.java:94)
    在 org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:222)
    在 org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:126)
    在 org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:145)
    在 org.eclipse.mat.ui.snapshot.ParseHeapDumpJob.run(ParseHeapDumpJob.java:83)
    在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

这是我的环境。

java版本“1.8.0_60”
Java(TM) SE 运行时环境 (build 1.8.0_60-b27)
Java HotSpot(TM) 64 位服务器 VM(内部版本 25.60-b23,混合模式)

Linux 版本 2.6.32-504.el6.x86_64

但是 jhat 可以正确分析它。

4

1 回答 1

1

这似乎是 Java 8 的一个已知问题。请参阅Bug 471757Bug 476262。两者都没有修复。作为临时解决方法,我会尝试Yourkit。它要花钱,但过去对我来说效果很好,至少您可以获得免费的 2 周评估密钥,该密钥应该足够长以解决您当前的问题。

于 2016-01-12T03:41:53.080 回答