Linux上的Java性能分析

3

我有一个相当复杂的Java应用程序,它正在利用大量CPU资源,想知道是否有任何建议的配置工具可以用来确定CPU使用率的原因。我的目标是找出在代码中使用大部分CPU时间的位置。


任何Java分析器都可以在Linux上运行。 - Dolph
你在使用集成开发环境吗?大多数好的IDE都内置或作为模块提供了性能分析器。 - Michael Myers
不,我没有运行IDE。我的应用程序实际上是由另一个应用程序启动的。 - beyonddc
你正在运行哪个Java版本?是1.6更新7或更高版本吗? - Michael Myers
1
如果您有JDK 1.6.0_07或更高版本,则会自带JVisualVM;这就是我询问的原因。 - Michael Myers
6个回答

3

0

Netbeans拥有良好的内置分析器。NB在Ubuntu 9.10上运行得相当不错。

如果您的问题无法在开发中观察到,您可以将分析器附加到远程JVM(您的生产环境)。您必须配置主机JVM以接受来自分析器的JMS / JConsole连接。JMS / JConsole实时监视可视化图表看起来非常棒。


0

我在eclipse IDE中使用了Visual VM。如果你不在一个IDE上,jhat和jconsole会有帮助。Google jhat以获取更多信息。


0
如果您熟悉Eclipse,我建议使用TPTP

0

如果您使用Sun Java 6,请学习如何在运行问题程序的计算机上使用JDK中的jvisualvm。

Jvisualvm可以解答大部分您的问题,能轻松地附加到已经运行的程序,并且是免费的。


-1

这种方法虽然技术含量不高,但效果最好。以下是简短的解释

由于您没有在IDE下运行,因此可以使用pstacklsstack获取堆栈样本。如果应用程序使用的时间比应该使用的时间多得多,则很可能问题是一个或几个流氓函数调用,在大多数堆栈样本中都会清晰可见。


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