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

标签 java profiling jvisualvm

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

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

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

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

使用的jvisualvm版本是1.3.2。

提前致谢, 阿克塞尔

最佳答案

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

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

关于java - jvisualvm 不会从 CPU 分析中排除某些方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7189899/

相关文章:

java - JVisualVM: "Local Applications Cannot Be Detected"

java - 如何摆脱错误 ArrayIndexOutOfBound 异常?

c - 生成数据通信流图(C程序,profiling)

ruby-on-rails - 分析 cucumber 测试(ruby/rails)

google-chrome - 如何使用 Google Chrome 的 devtools 配置文件报告(cpuprofile 文件)计算自身时间和总时间

ubuntu-18.04 - VisualVM 无​​法启动

tomcat - 在不重启 tomcat 的情况下获取应用程序的线程转储

java.io.FileNotFoundException : (Operation not permitted) error with ./keytool - 在 mac osx (el capitan) 上导入 - Java 6

java - 为 Django 设置 Cassandra - "ImportError: No module named pycassa"

java - onAnimationEnd 监听器的可靠性如何?