2

我正在尝试使用 jvisualvm 分析应用程序。该应用程序包含一个循环,其中从数据库加载数据,然后对数据执行一些复杂的计算。处理完一组数据后,加载并计算下一组数据。

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

过滤器工作 - 几乎。我的问题是,分析器报告大部分时间都花在了sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(),即使 sun.* 被输入到“不分析类”过滤器中。这是 sun.* 中唯一出现在我的分析结果中的方法。

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

使用的 jvisualvm 版本是 1.3.2。

在此先感谢,阿克塞尔

4

2 回答 2

1

听起来大部分时间都花在等待数据库上。如果你想分析其余的东西,你可以

  • 存根数据库以便它快速返回(从而使其余代码占用大部分时间),或者
  • 使用更好的分析器,例如 YourKit 或 JProfiler(付费,绝对支持您想要的)或 TPTP(免费,但我不确定它有多强大)
于 2011-08-25T16:35:29.787 回答
0

在 CPU 分析页面上取消选中“Profile new Runnables”。要使用“Self Time”回答您的其他问题 - 您需要拍摄分析数据的CPU 快照。快照包含总方法时间信息。

于 2011-09-03T09:17:54.457 回答