2013-06-05 103 views
3

我们公司正在寻找Java分析器。我们从Compuware(dynaTrace产品)那里得到了一个能够给CPU分析提供这种输出的例子(例子):高级Java分析

(好吧,我不能发布图片,其余的问题应该清楚没有这张图片)

dynaTrace给你的是一个特定方法的所有调用清单,其中包含每个调用花费多少时间,CPU时间多少以及等待IO的时间。这(在我看来非常简单)信息非常重要,是我们绝对需要的信息。

现在,问题是... 什么其他分析器实际上能够给这个信息王?

我试过VisualVM(JDK自带),YourKit和JProfiler。我没有找到任何方法来产生任何这些输出。

  • 测量的总挂钟时间与实际CPU时间应与采样非常容易,但似乎并的JProfiler YourKit只能测量或者挂钟时间或CPU时间,不可能兼顾。 VisualVM在采样时显示墙壁和CPU时间,这将使它比这两种付费产品中的任何一种都更好。

  • 将某个方法的调用分开并分别显示每个调用的结果(而不是不考虑调用方式和参数的方法的汇总信息)似乎是更高级的功能,并且这些产品都不是似乎能够做到这一点。

这两个特性对于我们在Profiler中是非常重要的。如果有人知道提供它们的产品,请告诉我,我会非常感激。

当然,很有可能某些提到的配置文件具有这些功能,但我没有找到在有限的时间内如何做到这一点,我不得不研究它们。

+0

添加链接到图像,以便其他人可以在 –

+0

编辑的图像是不是真的有必要,但这里有云:http://tinypic.com/r/5mkfn8/5 – Sethiel

回答

0

经过很多调查,答案很简单:没有的提到的轮廓仪能够在这个问题上我想要的 - 不是VisualVM,不是YourKit而不是JProfiler。

所以,如果你想要这种信息,你最好的选择可能是BTrace,这是免费的,并且与JMX结合,可以测量任何东西。毫不夸张地说 - 你可以访问所有的方法调用,包括所有的参数,你可以做任何你可以用Java编写的代码。

它还有很好的例子,所以你将能够理解这个概念并在一个小时内自定义测量。

+1

所以你去了BTrace而不是Dynatrace,因为它是免费的?还是你觉得它是一个更好的功能更多的产品? – raspacorp

0

虽然JProfiler不以这种方式显示,但它具有线程状态的概念,并且CPU视图在右上角有一个线程状态选择器。 This screen cast显示切换线程状态的效果。默认情况下,JProfiler显示“Runnable”状态,而不是挂墙时间(“所有状态”)。

+0

这将是相当不错的,如果有可能申请此呼叫跟踪器中的状态选择器(因此分别用于每个呼叫)。否则它不符合我说的第二个特征。 – Sethiel

+0

你是指呼叫跟踪器还是呼叫树?调用跟踪器是一个多线程调试工具,我不确定线程​​状态是否适合。在调用树中,我们打算在“所有状态”视图中显示所有线程状态的分解,但目前还不可能。 –

+0

我的意思是呼叫示踪剂。因为,正如我在问题中所写的,我绝对需要为方法的每次调用都看到此信息。我认为只有Call tr​​acer可以在JProfiler中完成。 – Sethiel