Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java应用程序的性能分析器_Java_Performance_Profiling - Fatal编程技术网

java应用程序的性能分析器

java应用程序的性能分析器,java,performance,profiling,Java,Performance,Profiling,我需要优化Java应用程序。它会打一些第三方电话。我需要一些好的工具来准确地测量单个API调用所花费的时间。 了解复杂性- 应用程序获取一个包含一百万行的数据源文件,完成处理大约需要一个小时。作为处理的一部分,它会拨打一些第三方电话(包括一些网络电话)。我需要确定哪些呼叫比其他呼叫花费的时间更多,并在此基础上找到优化应用程序的方法 如果您有任何建议,我们将不胜感激。我已经使用过几次了,非常满意。然而,我从未描述过长期运行的操作 每行的处理是否相同?在这种情况下,输入文件的大小实际上并不重要。您可

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

如果您有任何建议,我们将不胜感激。

我已经使用过几次了,非常满意。然而,我从未描述过长期运行的操作

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

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

我可以推荐。它是与Oracle/Sun JDK捆绑在一起的一个很好的监视/分析工具。只需启动它,连接到应用程序并启动CPU评测。你应该得到关于时间花在哪里的直方图

有一个很好的屏幕展示给你如何使用它

屏幕截图:


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

-Xprof

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


在这种情况下,听起来普通的探查器可能不是合适的工具,因为它们用于测量被探查的程序所花费的CPU时间,而不是它调用的外部API,而且,如果长时间运行,它们往往会导致自身的高开销,并收集大量数据,这些数据可能会淹没您的系统


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

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


但我也使用了visualvm。它既免费又快捷。在使用YourKit(YourKit不是免费软件)之前,您可能首先想尝试一下Visual VM。

我使用(它非常出色,已经内置,无需安装插件)或者不使用NetBeans时。

试试OPNET的Panorama软件产品。

只是想提到inspectIT工具。它最近变得完全开源()。它提供完整详细的调用图和上下文信息,有许多现成的传感器用于数据库调用、http监控、异常等


<> >适合你的用例..

如何设置VisualVM的副本:考虑一下,也可以…我可以减少输入大小!!Thanx你确定perf4j会奏效吗??我尝试使用System.currentTimeMillis()。它似乎不够精确。@Nitin:大概它使用的是System.nanoTime(),它的精确度要高得多。但从你的描述中,我得到的印象是,即使是毫秒级的粒度也足以满足你最耗时的事情(比如通过网络调用的第三方组件)。visualvm也与你最喜欢的IDE集成。啊,我不知道。你有什么好的URL来解释如何与eclipse一起使用?我来晚了一点,但解释了如何在eclipse中设置VisualVM。如果你按照这些说明操作,并且在启动时遇到nullPointerException问题,请参阅以下问答如何设置VisualVM: