代码之家  ›  专栏  ›  技术社区  ›  David Citron

类似HPjmeter的图形工具来查看-agentlib:hprof分析输出

  •  10
  • David Citron  · 技术社区  · 15 年前

    有哪些工具可用于查看内置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. 编辑 :是——见下文)

    我知道 Eclipse TPTP 其他工具可以动态监视JVMTI数据,但我需要一个解决方案,在实际情况发生后可以处理生成的hprof文件,因为部署的机器只安装了JRE(而不是JDK)。

    :一个非常有用的HPjmeter开发人员回复了我的 question on an HP ITRC forum heap=dump 需要包含在 -agentlib 临时选项,直到修复HPjmeter中的错误。这些信息使HPjmeter再次变得可行,但我仍将留下一个问题,看是否有人知道任何其他工具。

    :从HPjmeter 4.0.00版(2009年5月提供)起,此错误已被修复。

    4 回复  |  直到 15 年前
        1
  •  6
  •   Bogdan    15 年前

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

        2
  •  1
  •   sleepsort Guru    11 年前

    用于查看和分析 hprof=samples hprof=cpu 我用过PerfAnal,效果很好。GUI有点斯巴达,但非常有用。

    PerfAnal是一个免费下载(GPL,最初是书中的一个示例项目 ).

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

    更多信息和下载。

    通常你可以跑

    java -jar PerfAnal.jar hprof.java.txt
    

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

        3
  •  0
  •   TofuBeer    15 年前

    VisualVM ?

    我相信它会打开结果文件。

        4
  •  0
  •   Daniel H.    15 年前

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

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

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

    编辑:

    JRat 对于小项目。它显示了每个方法花费的时间、调用方法的次数、调用的层次结构等。唯一的问题是,据我所知,它不支持.hprof文件。要使用它,您需要执行程序并添加一个VM参数

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

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

     java -jar shiftone-jrat.jar
    

    打开痕迹。即使是一个简单的工具,我也认为它是有用的。