【发布时间】:2010-10-16 23:53:34
【问题描述】:
有哪些工具可用于查看内置 JVM 分析器的输出?例如,我正在启动我的 JVM:
-agentlib:hprof=cpu=times,thread=y,cutoff=0,format=a,file=someFile.hprof.txt
这会生成 hprof(“JAVA PROFILE 1.0.1”)格式的输出。
我过去曾成功使用HPjmeter 以合理的方式查看这些输出文件。但是,无论出于何种原因,使用当前版本的 Sun JVM 生成的文件都无法在当前版本的 HPjmeter 中加载:
java.lang.NullPointerException
at com.hp.jmeter.f.jb.a(Unknown Source)
at com.hp.jmeter.f.a.a(Unknown Source)
at com.hp.c.a.j.z.run(Unknown Source)
Exception in thread "HPeprofDataFileReaderThread" java.lang.AssertionError: null pointer exception from loader
at com.hp.jmeter.f.a.a(Unknown Source)
at com.hp.c.a.j.z.run(Unknown Source)
(他们为什么要混淆免费产品的字节码?!)
由此引发了两个问题:
- 有人知道这个HPjmeter错误的原因吗? (编辑:是——见下文)
- 还有哪些其他工具可以读取 hprof 文件?为什么 Sun 没有(有)?
我知道Eclipse TPTP 和其他工具可以实时监控 JVMTI 数据,但我需要一个能够在事后处理生成的 hprof 文件的解决方案,因为部署的机器只安装了 JRE(不是 JDK)。
编辑:一位非常有帮助的 HPjmeter 开发人员回复了我的 question on an HP ITRC forum,指出 heap=dump 需要暂时包含在 -agentlib 选项中,直到修复 HPjmeter 中的错误。这些信息使 HPjmeter 再次变得可行,但我仍然会留下这个问题,看看是否有人知道任何其他工具。
编辑:从 HPjmeter 4.0.00 版(2009 年 5 月发布)开始,此错误已得到修复。
【问题讨论】: