Java 应用程序的性能探查器

2022-09-01 15:35:01

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

任何建议将不胜感激。


答案 1

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

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

屏幕截图:

VisualVM screenshot


另一个更基本的替代方案是使用命令行选项:-Xprof

-Xprof

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


答案 2

我已经使用过几次YourKit,并且对它非常满意。但是,我从未分析过长时间运行的操作。

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


推荐