【发布时间】:2011-11-04 13:23:49
【问题描述】:
我想在 Java VisualVm(版本 1.7.0 b110325)中过滤哪些类被 cpu-profiled。为此,我尝试在 Profiler -> Settings -> CPU-Settings 下将“Profile only classes”设置为我的测试包,但没有效果。然后我尝试通过将所有 java.* 和 sun.* 类设置在“Do not profile classes”中来摆脱它们,这也没有效果。
这只是一个错误吗?还是我错过了什么?有解决方法吗?我的意思是:
- 为更好的分析器付费
- 手工采样(见One could use a profiler, but why not just halt the program?)
- 切换到调用树视图,这并不好,因为只有 Profiler 视图给我每个方法消耗的 CPU 百分比。
我想这样做主要是为了获得每个方法消耗的 CPU 的一半正确百分比。为此,我需要摆脱烦人的测量,例如对于sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()(大约 70%)。许多用户似乎有这个问题,参见例如
【问题讨论】:
-
您的目的是让代码尽可能快地运行吗?或者只是为了得到一些百分比,不管它们是什么意思?常用的“时间”是高度模糊的。
-
是的,我的主要目标是让代码运行得更快。我还想估计代码应该更改多少。因此,我想大致了解所有热点及其严重程度。我认为 VisualVm 的结果是可以接受的,尽管使用了挂时间 - 如果只有少数 sun.* 和 java.* 类不会弄乱所有统计数据。
标签: java profiling profiler visualvm jvisualvm