分析 Java CPU 负载
Posted
技术标签:
【中文标题】分析 Java CPU 负载【英文标题】:Profile Java CPU load 【发布时间】:2011-11-29 14:58:31 【问题描述】:我需要分析一个商业 Java 应用程序的 CPU 负载,我没有该应用程序的源代码。
我可以看到应用程序受 CPU 限制,但我如何了解 CPU 是否忙于执行 FP 操作、整数操作或其他操作?
如果我能找到一个典型的负载,我可以使用一些开源基准测试工具来模拟不同硬件平台上的负载,以了解哪个 CPU 为我提供了最佳价值,这是我的最终目标。
【问题讨论】:
您可以使用 jprobe/jprofiler 之类的工具进行内省 - 这将显示正在调用哪些方法/操作以及哪些内容占用了时间和内存。虽然它们本身可能不做 CPU,但您肯定可以为此目的查看 sar/top/mpstat(即,无论 CPU 跳到哪里,拍摄快照)? 【参考方案1】:如果您使用的是 JDK 1.6.x,我强烈推荐 jvisualvm,它是 $JAVA_HOME/bin 中的可执行文件。
这将帮助您确定您的 CPU 瓶颈,但如果您没有来源,您解决潜在问题的能力将受到限制。
【讨论】:
您需要下载 JDK(不是 JRE)或 jvisualvm 的独立版本。它可以附加到正在运行的程序!需要 Oracle JVM。【参考方案2】:JProfiler 程序(商业软件)http://www.ej-technologies.com/products/jprofiler/overview.html 对我很有帮助。 (2-3年前。但是软件应该还是不错的:))
【讨论】:
【参考方案3】:我一直在使用 dynaTrace 产品版,它对我帮助很大。低开销,对 CPU 和内存瓶颈的高度可见性。
我推荐 dynaTrace。
【讨论】:
以上是关于分析 Java CPU 负载的主要内容,如果未能解决你的问题,请参考以下文章