适用于Java应用程序的性能分析器

时间:2010-06-14 07:31:26

标签: java performance profiling

我需要优化Java应用程序。它会进行第三方通话。我需要一些好的工具来准确测量各个API调用所花费的时间。 要弄清楚复杂性 - 应用程序采用包含100万行的数据源文件,完成处理大约需要一个小时。作为处理的一部分,它会进行一些第三方呼叫(包括一些网络呼叫)。我需要确定哪些调用比其他调用花费更多时间,并在此基础上找到优化应用程序的方法。

任何建议都将不胜感激。

8 个答案:

答案 0 :(得分:27)

我可以推荐JVisualVM。它是与Oracle / Sun JDK捆绑在一起的出色监控/分析工具。只需启动它,连接到您的应用程序并启动CPU分析。你应该在时间花费的地方得到很好的直方图。

Getting Started with VisualVM有一个很好的屏幕演示,向您展示如何使用它。

屏幕截图:

VisualVM screenshot


另一个更基本的选择是使用-Xprof命令行选项:

  

-Xprof

     
    

配置正在运行的程序,并将分析数据发送到     标准输出。此选项作为实用程序提供     在程序开发中很有用,并不打算成为程序开发     用于生产系统。

  

答案 1 :(得分:7)

我一直在使用YourKit几次,对此非常满意。然而,我从来没有描述过长时间运行的操作。

每行的处理是否相同?在这种情况下,输入文件的大小并不重要。您可以分析一个子集以确定哪些调用很昂贵。

答案 2 :(得分:5)

只是想提一下inspectIT工具。它最近变成了完全开源的(https://github.com/inspectIT/inspectIT)。它提供了完整详细的调用图和上下文信息,有许多用于数据库调用,http监控,异常等的开箱即用传感器。

接缝非常适合您的用例..

答案 3 :(得分:2)

尝试OPNET的Panorama软件产品

答案 4 :(得分:1)

在这种情况下,听起来像普通的分析器可能不是正确的工具,因为它们的目的是测量被分析的程序所花费的CPU时间而不是它所调用的外部API,并且它们往往会产生高的他们自己的开销并收集大量数据,如果长时间运行可能会使你的系统崩溃。

如果你确实需要在很长一段时间内收集性能数据,主要是外部呼叫,那么Perf4J可能是一个更好的工具。

答案 5 :(得分:1)

在我们的办公室,我们每天都使用YourKit分析器。它的重量非常轻,适用于我们所拥有的大多数与性能相关的用例。

但我也使用了Visual VM。它是免费的,快速的。在开始使用YourKit之前,您可能首先想尝试使用Visual VM(YourKit不是免费软件)。

答案 6 :(得分:0)

visualvm(SDK的一部分)和Java 7可以生成详细的分析。

答案 7 :(得分:0)

我使用profiler in NetBeans(它非常棒,已经内置,无需安装插件)或JVisualVM不使用NetBeans时。