Java逐行方法/函数分析 - 分析器和/或Eclipse插件

17

我正在尝试优化 Java 中的一些较大方法。目前我使用 jVisualVM 进行大部分分析,它可以显示方法调用热点,是一个很好的起点。

我正在寻找一种逐行热点分析器,可以帮助我缩小导致程序运行缓慢的原因。以往我使用的显然方法是在有策略地添加 System.currentTimeMillis() 打印或者在更极端的情况下使用Java CPUTime(通过 JNI 完成)。还有一些像 Intel Parallel Amplifier 这样的分析器可用于 C 和 Visual Studio,但是否有类似于它们的 Java 分析器呢?

这两种方法都有些繁琐,所以有没有什么工具(Eclipse 插件或其他)可以进行逐行热点分析呢?

2个回答

3

JProfiler具有行号分辨率功能。默认情况下未启用,但如果您编辑了分析设置,则在“方法调用记录”选项卡上有一个名为“记录行号并在调用树中显示”的复选框:

enter image description here

免责声明:我的公司开发JProfiler。

4
你在撒谎,至少部分是。行号只针对调用点,而不是实际方法内容。 - Dexter
我绝对不是在“说谎”。当然,行号是为调用站点记录的,因为那是唯一可测量的东西。在调用树视图中,感兴趣的“方法内容”是调用站点所在方法的内容,而不是被调用的方法的内容。你的问题可能是你正在寻找一个不同的视图,在这个视图中你可以看到带有注释时间信息的方法源代码。截至8.0版本,JProfiler没有提供这个功能。 - Ingo Kegel

0
dynaTrace中,您可以通过为所有被调用的方法添加仪器来执行类似的操作,但它是商业工具。或者,您可以使用例如ASM编写自己的仪器工具(但这非常繁琐 :()。

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