用于 CPU 消耗的 Java 分析工具

Posted

技术标签:

【中文标题】用于 CPU 消耗的 Java 分析工具【英文标题】:Java Profiling Tool for CPU consumption 【发布时间】:2010-11-09 04:37:12 【问题描述】:

我使用过 JProfiler、JProbe、AppSight、YourKit 来找出哪些代码正在消耗 CPU。 但是 YourKit 看起来比其他的要好。

还有什么更好的吗?

【问题讨论】:

YourKit 是我试过的最好的。 这里是similar SO thread,可能会有所帮助。 仅适用于 JProfiler。它在分析我们的 Apache + GWT 应用程序方面做得非常好,我们甚至从不费心尝试其他东西。我也对你问题的答案感兴趣。谢谢! 【参考方案1】:

Sun 6 JDK 中有 jvisualvm。它“更好”是因为它免费且易于使用,非常简单,但具有能够附加到已经运行的程序的杀手级功能。它是 NetBeans 分析器的独立版本,也是免费的。

如果“更好”包括价格,这些都很难被击败。

【讨论】:

感谢您的回复。我很久以前(可能是 1.5 年)就使用过 NetBeans 分析器。它适用于内存分析,但不适用于 cpu 计时。它现在也适用于计时吗?【参考方案2】:

除非您定义“更好”的含义,否则您不能问哪个更好。基本上它是课程的马。对于哪个是最好的工具以及出于什么原因,每个人都有自己的偏好。

有我见过的主要工具,但取决于你喜欢哪个。

【讨论】:

感谢您的回复。对我来说更好的是易于使用和设置以及准确的 cpu 分析。 Yourkit 有 2 种分析模式:采样(高级)和跟踪(深度 CPU 计时)。它在采样模式下可以创造奇迹,你可以从中找出大部分消耗 CPU 的代码。但是,要进行更详细的分析,您必须在跟踪模式下运行。即使在此模式下使用过滤器运行后,时间也与实际时间相去甚远。我试过JProbe,即使在高级模式下也不准确。 我刚刚检查了 VisualVM,因为我不知道它可以附加到进程而不需要重新启动该进程。聪明的。也很高兴它带有Java。但至于详细的功能,我不知道。我只使用分析工具进行基本分析,通常是寻找内存泄漏。

以上是关于用于 CPU 消耗的 Java 分析工具的主要内容,如果未能解决你的问题,请参考以下文章

java性能问题排查提效脚本工具

jvm监控工具jps,jstat,jstack,jmap的使用方法

Java 性能分析工具-MAT

JVM常用性能分析工具

高规格虚机 sys cpu高现场分析工具箱

JVisualVM 进行性能分析及调优