【问题标题】:HPjmeter-like graphical tool to view -agentlib:hprof profiling output用于查看 -agentlib:hprof 分析输出的类似 HPjmeter 的图形工具
【发布时间】: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)

(他们为什么要混淆免费产品的字节码?!)

由此引发了两个问题:

  1. 有人知道这个HPjmeter错误的原因吗? (编辑:是——见下文)
  2. 还有哪些其他工具可以读取 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 月发布)开始,此错误已得到修复。

【问题讨论】:

    标签: java profiling hprof


    【解决方案1】:

    为了查看和分析hprof=sampleshprof=cpu 的输出,我使用了PerfAnal,结果很好。 GUI 有点简陋,但非常有用。

    PerfAnal 可免费下载(GPL,最初是Linux 上的Java 编程 一书中的示例项目)。 见这篇文章:

    http://www.oracle.com/technetwork/articles/javase/perfanal-137231.html

    更多信息和下载。

    通常你可以运行

    java -jar PerfAnal.jar hprof.java.txt
    

    对于大型 hprof 文件,您可能需要使用 -Xmx。

    【讨论】:

      【解决方案2】:

      我一直在使用Eclipse Memory Analyzer 成功分析不同的性能问题。首先,在 Eclipse 中按照项目网页中的说明安装工具。

      之后,您可以创建一个转储文件,知道要分析的 jvm 的 pid

      jmap -dump:format=b,file=<filename>.hprof <jvm_pid> 
      

      然后只需在 eclipse 中导入 .hprof 文件。它有一些自动报告尝试(对我来说它们通常不起作用)指出哪些可能是可能的问题。

      编辑:

      回答评论:你是对的,它更像是 Java 的泄漏查找器。对于性能问题,我在小型项目中使用过JRat。它显示了每个方法消耗的时间、调用方法的次数、调用的层次结构等。唯一的问题是,据我所知,它不支持 .hprof 文件。要使用它,您需要执行添加 VM 参数的程序

      -javaagent:<path>/shiftone-jrat.jar
      

      这将生成一个目录,其中包含该工具捕获的配置文件。然后,执行

       java -jar shiftone-jrat.jar
      

      并打开跟踪。即使是一个简单的工具,我认为它可能很有用。

      【讨论】:

      • 我之前玩过 MAT,但我记得它只分析 hprof 文件的 HEAP DUMP 部分,而不是性能分析部分。他们是否添加了该功能?
      【解决方案3】:

      Your Kit Java Profiler 能够读取 hprof 快照(我不确定是否仅用于内存分析或 CPU)。它不是免费的,但它是迄今为止我用过的最好的 java profiler。它以清晰、直观的方式呈现结果,并且在大型数据集上表现良好。文档也很不错。

      【讨论】:

      【解决方案4】:

      我不能 100% 确定它会起作用(听起来好像会),我不确定它会以您想要的格式显示它...但是您是否考虑过 VisualVM

      我相信它会打开生成的文件。

      【讨论】:

      • VisualVM 显然只从 hprof 文件中加载“堆转储”信息(而不是分析数据),并且无论如何都会挂起加载所述文件。你在这方面取得了成功吗?我真的在寻找 >= HPJmeter 的东西 :-)
      • 不幸的是我还没有使用它......只是意识到它。您是否尝试过使用 Visual VM 进行分析(但听起来您真的想要一个离线查看器)?
      • 是的,我当然可以使用多种工具在本地进行分析,但如果有一些工具可以离线显示 hprof 文件,那就太好了。 HPJmeter 太接近了,如果我能让它工作的话。我希望他们分发源代码。
      • @DavidCitron visualvm 如果您打开 format=a 文件似乎会挂起,但可以与 format=b 一起使用,但似乎无法理解 cpu=samples
      猜你喜欢
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      相关资源
      最近更新 更多