我们公司目前正在寻找一位Java分析工具。我们得到了Compuware(dyanTrace产品)的报价,该产品能够提供这种CPU分析输出(示例):
(好吧,我不能发布图片,问题的其余部分应该清楚无误)
dyanTrace提供的是特定方法的所有调用列表,并提供有关每个调用花费了多少墙上时间,其中有多少是CPU时间,有多少是等待IO的确切信息。这些(在我看来非常简单的)信息非常重要,也是我们绝对需要的。
现在的问题是......哪个其他分析工具实际上能够提供这种信息?
我尝试过JDK带的VisualVM、YourKit和JProfiler,但我没有找到任何方法来使用它们中的任何一个产生此输出。
总墙上时间和实际CPU时间的测量应该非常容易进行采样,但似乎JProfiler和YourKit只能测量墙上时间或CPU时间,从未同时测量两者。当采样时,VisualVM显示墙和CPU时间,这使它比这两个付费产品更好。
将某个方法的调用分开,并为每个调用单独显示结果(而不是针对调用位置和参数聚合方法的信息)似乎是一项更高级的功能,这些产品似乎都无法胜任。
对于我们来说,这两个功能在分析工具中是必不可少的。如果有人知道提供它们的产品,请告诉我,我将非常感激。
当然,很可能其中一些分析工具具有这些功能,而我没有在有限的时间内找到如何使用它们。
(好吧,我不能发布图片,问题的其余部分应该清楚无误)
dyanTrace提供的是特定方法的所有调用列表,并提供有关每个调用花费了多少墙上时间,其中有多少是CPU时间,有多少是等待IO的确切信息。这些(在我看来非常简单的)信息非常重要,也是我们绝对需要的。
现在的问题是......哪个其他分析工具实际上能够提供这种信息?
我尝试过JDK带的VisualVM、YourKit和JProfiler,但我没有找到任何方法来使用它们中的任何一个产生此输出。
总墙上时间和实际CPU时间的测量应该非常容易进行采样,但似乎JProfiler和YourKit只能测量墙上时间或CPU时间,从未同时测量两者。当采样时,VisualVM显示墙和CPU时间,这使它比这两个付费产品更好。
将某个方法的调用分开,并为每个调用单独显示结果(而不是针对调用位置和参数聚合方法的信息)似乎是一项更高级的功能,这些产品似乎都无法胜任。
对于我们来说,这两个功能在分析工具中是必不可少的。如果有人知道提供它们的产品,请告诉我,我将非常感激。
当然,很可能其中一些分析工具具有这些功能,而我没有在有限的时间内找到如何使用它们。