Java性能分析:查看二进制hprof CPU采样转储

3
有没有办法查看使用JRE内置的hprof代理程序创建的带有hprof=cpu=samples,format=b参数的java hprof cpu profiling dumps?
以下工具不支持查看hprof cpu采样数据:
  • VisualVM
  • YourKit
  • JProfiler
  • Eclipse MAT

Visual VM随JVM一起发布。我认为你会喜欢它的可视化特性。 - duffymo
@duffymo Visual VM在加载的(并由外部创建的)hprof文件中不显示CPU采样信息。它只支持/显示hprof堆转储信息。 - MRalwasser
1个回答

1

通过一些搜索,发现两个工具似乎可以分析由 hprof cpu=samples 选项生成的 CPU 分析数据(我没有尝试过它们):

  • PerfAnal:请参见 this linkthis one,这似乎是从该项目的页面得来的。但它看起来非常古老,希望你在使用它时能够运气好。

  • HP 公司的一个名为 HPjmeter 的工具。this question 的所有者提到他成功地使用它来分析这种分析信息。该工具的用户手册表示它支持代理输出的二进制格式。

请记住,无论何种情况下,hprof代理始终是实验性的(this post讨论了其不准确性),并且在Java 9中将被完全删除。如果可能的话,最好使用您提到的工具来分析应用程序运行时的情况。

我知道这两个工具。然而,HPjmeter似乎不再免费(好吧,这不是问题所要求的),而且正如你已经提到的,PerfAnal似乎非常古老(只有源代码可用)。我希望市场上有一些新的(可能是免费的)工具。但无论如何,感谢您指出Java 9中删除hprof代理的事实,这是我不知道的。顺便说一下,我不想使用hprof代理——我正在寻找一个可以显示由我的工具创建的hprof文件的工具。 - MRalwasser
@MRalwasser 如果你的工具的二进制格式与JVM代理生成的格式对齐,分析器应该能够查看它们。了解hprof的原始开发人员打算如何处理CPU采样的二进制格式是很有趣的。目前似乎没有一个JDK工具可以生成等效的hprof格式的CPU采样转储,所以这种二进制格式看起来是实验性的而不是官方的。顺便说一句,我已经投票重新打开这个问题,以防万一Sun/Oracle的开发人员可以神奇地回答 :) - M A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接