这不是很漂亮,但是您可以通过在命令行中添加一个开关来使用内置的 hprof 分析机制。
-Xrunhprof:cpu=times
有很多选择;有关详细信息,请参阅HPROF的 Oracle 文档页面。
因此,例如,如果您有一个想要分析的可执行 jar,您可以键入:
java -Xrunhprof:cpu=times -jar Hello.jar
运行完成后,您将拥有一个名为“java.hprof.txt”的(大)文本文件。
该文件将包含一堆有趣的数据,但您要查找的部分是开始的部分:
CPU TIME (ms) BEGIN (total = 500) Wed Feb 27 16:03:18 2013
rank self accum count trace method
1 8.00% 8.00% 2000 301837 sun.nio.cs.UTF_8$Encoder.encodeArrayLoop
2 5.40% 13.40% 2000 301863 sun.nio.cs.StreamEncoder.writeBytes
3 4.20% 17.60% 2000 301844 sun.nio.cs.StreamEncoder.implWrite
4 3.40% 21.00% 2000 301836 sun.nio.cs.UTF_8.updatePositions
或者,如果您还没有这样做,我会尝试安装 VisualVM-Extensions、VisualGC、Threads Inspector,以及至少 Swing、JVM、Monitor 和 Jvmstat Tracer Probes。
转到工具-> 插件来安装它们。如果您需要更多详细信息,请发表评论,我将进一步扩展此答案。