2011-08-25 95 views
2

我正在尝试使用jvisualvm分析应用程序。该应用程序由一个循环组成,其中从数据库加载数据,然后对数据执行一些复杂的计算。当一组数据被处理时,下一组被加载和计算。jvisualvm不排除某些方法从CPU分析

当我开始我的应用程序并附加jvisualvm时,我在CPU分析页面上设置了一个过滤器(“Sart profiling from classes”和“Do not profile classes”),因为我对任何涉及数据库访问和其他输入/输出相关的东西。

过滤器工作 - 差不多。我的问题是,尽管sun。*被输入到“不配置文件类”过滤器中,但大部分时间的配置文件报告都花费在sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()之上。这是sun中唯一的方法。*出现在我的分析结果中。

有没有人看过这个之前知道如何摆脱它?问题是,所有其他方法在“自我时间”列中只显示少量(< 1%),大多数方法显示为0%。

使用的jvisualvm版本是1.3.2。

由于提前, 阿克塞尔

+0

不要看“自我时间”。 [这实际上没有意义。](http://stackoverflow.com/questions/1777556/alternatives-to-gprof/1779343#1779343) –

+0

有趣的链接,但考虑到只显示的列是“自我时间”,“自我时间[%]“和”Invocations“,没有太多可以看的...... :-) – Axel

+0

必须有一种方法来获得包容性的时间。它可能被称为“累计”或“总计”时间。 –

回答

1

听起来像大多数的时间都花在从数据库中等待。如果要分析的剩下的东西,你可以

  • 存根的数据库,以便快速返回(从而使你的代码的其余部分占据了大部分的时间),或
  • 使用更好例如YourKit或JProfiler(支付,绝对支持你想要的)或TPTP(免费,但我不知道它有多强大)
+0

那么我会与你的第一个建议去。我以前使用过TPTP,但它不再可用。如果没有任何帮助,我想我将不得不保留一个单独的Helios安装进行分析。 – Axel

+0

[YourKit](http://www.yourkit.com/)的付款方式正确,但已有〜2周的试用期。我用它的试验来描述一个紧迫的问题 - 在那之后,我非常乐意获得付费版本。 – gnat

0

取消选中CPU概要分析页面上的'Profile new Runnables'。 要用“自我时间”回答您的其他问题 - 您需要获取配置数据的CPU snapshot。快照包含总方法时间信息。