我的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(HprofParser HandlerImpl.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(HprofIndexCuilder.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运行时环境(版本1.8.0_60-b27)Java HotSpot(TM)64位服务器虚拟机(内部版本25.60-b23,混合模式)Linux版本2.6.32-504.el6.x86_64
但是jhat可以正确地分析它。
这似乎是Java 8的已知问题。请参阅Bug 471757和Bug 476262。两者都没有修复。作为临时解决办法,我会试试Yourkit。它很花钱,但在过去对我来说效果很好,至少你可以获得一个为期两周的免费评估密钥,该密钥应该足够长,可以解决你当前的问题。