Java应用程序的性能分析器

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

任何建议,将不胜感激。

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

VisualVM入门有一个很棒的屏幕演示,向您展示如何使用它。

截屏:

VisualVM截图


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

-Xprof

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

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

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

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

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

试试OPNET的Panorama软件产品

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

如果你真的需要在这么长的时间内收集性能数据,主要是外部调用,那么Perf4J可能是一个更好的工具。

在我们的办公室,我们每天都使用YourKit分析器。 它的重量非常轻,可以满足大多数与性能相关的用例。

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

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

我在NetBeans中使用分析器 (它非常精彩且已内置,无需安装插件)或JVisualVM ,而不使用NetBeans。