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