如何追查性能损失的原因?

Tim*_*imo 2 java performance

我在Tomcat 6上运行基于Java的多用户Web应用程序.

出于某种原因,1天后整个应用程序变得非常慢.

"top" 虽然在线用户不多,但我认为CPU有120%(由tomcat进程引起),所以我认为存在某种无限循环(或类似问题).

在我的本地系统上,我无法重现问题.我也无法找出导致问题的部分(哪个类/方法).

调试这个的最佳方法是什么?

Mat*_*teo 8

使用分析器并查看哪些方法运行最多(大多数呼叫或大多数时间).jvisualvm是免费的,是Java JDK的一部分.

如果GUI不是一个选项(如评论中所述),请尝试使用hprof(http://java.sun.com/developer/technicalArticles/Programming/HPROF.html)或任何命令行分析器(其中有许多) .

但是您不需要在同一台机器上运行探查器GUI.您可以在计算机上运行它并连接到远程VM.