jvisualvm 不会从 CPU 分析中排除某些方法

Posted

技术标签:

【中文标题】jvisualvm 不会从 CPU 分析中排除某些方法【英文标题】:jvisualvm doesn't exclude certain methods from CPU profiling 【发布时间】:2011-08-25 11:55:04 【问题描述】:

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

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

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

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

使用的jvisualvm版本是1.3.2。

提前致谢, 阿克塞尔

【问题讨论】:

不要看“自拍时间”。 It's practically meaningless. 有趣的链接,但考虑到要显示的唯一列是“Self Time”、“Self Time [%]”和“Invocations”,没有太多可看的了... :-) 必须有办法获得包容性时间。它可能被称为“累积”或“总”时间。 【参考方案1】:

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

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

【讨论】:

那么我会接受你的第一个建议。我以前使用过 TPTP,但它不再可用 Indigo。如果没有任何帮助,我想我将不得不保留一个单独的 Helios 安装以进行分析。 YourKit 已付费,正确,但试用期约为 2 周。我使用它的试用版来描述一个紧迫的问题 - 在那次试用版之后,我非常高兴获得付费版本。【参考方案2】:

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

【讨论】:

以上是关于jvisualvm 不会从 CPU 分析中排除某些方法的主要内容,如果未能解决你的问题,请参考以下文章

SonarQube MSBuild Scanner 不会从分析中排除文件

是否可以在 jvisualvm 中同时进行 CPU 和内存分析?

jvisualvm是啥

jvisualvm的使用

如何使用JVisualVM进行性能分析

如何使用JVisualVM进行性能分析