我正在审查一个大型 Java 应用程序,看看是否存在任何性能瓶颈。真正的问题是我无法确定任何单个模块的性能问题。整个应用程序很慢。
有什么工具/技术可以帮助我解决这个问题吗?
我正在审查一个大型 Java 应用程序,看看是否存在任何性能瓶颈。真正的问题是我无法确定任何单个模块的性能问题。整个应用程序很慢。
有什么工具/技术可以帮助我解决这个问题吗?
尝试对正在运行的代码使用分析器。它应该可以帮助您识别瓶颈。尝试jprofiler或Netbeans 分析器
我经常很高兴使用Java -Xprof
. 这为您提供了代码花费大部分时间的函数的排序列表。
如果您在 Java 6 上运行,则可以使用提供的监控工具
出于测试/开发目的,您可以从该站点免费下载 Oracle JRockit Mission Control 。(需要登录,但可以使用任何电子邮件地址设置帐户)
文档在这里。它将允许您找到热点、内存泄漏等等。
YourKit是一个优秀的 java 分析器(不是免费的)。
正如我们从 如何分析在 Linux 中运行的 C++ 代码中看到的那样?,最具有统计意义的方法是使用堆栈分析器。
好吧,Java 在 JVM 中运行,因此获得对 C 代码有用的堆栈对我们没有用(它会获得 JVM 的东西,而不是您的代码)。幸运的是,Java 有jstack
!http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstack.html
它会给你一堆线程,比如 GarbageCollector。不用担心这些,只要看看你的线程在哪里。