繁体   English   中英

Java应用程序的性能分析器

[英]Performance profiler for a java application

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

任何建议,将不胜感激。

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

《 VisualVM入门》有一个出色的截屏,向您展示了如何使用它。

屏幕截图:

VisualVM屏幕截图


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

-Xprof

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

我已经使用过YourKit几次,对此感到非常满意。 但是,我从未描述过长时间运行的操作。

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

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

接缝非常适合您的用例。

试用OPNET的Panorama软件产品

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

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

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

但是我也使用过Visual VM。 它是免费且快速的。 在转向YourKit之前,您可能首先想尝试一下Visual VM(YourKit不是免费软件)。

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

在不使用NetBeans的情况下,我在NetBeans中使用了探查器 (它确实很棒,并且已经内置,无需安装插件)或JVisualVM

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM