我想过滤 Java VisualVm(版本 1.7.0 b110325)中哪些类正在被 cpu 分析。为此,我尝试在 Profiler -> Settings -> CPU-Settings 下为我的测试包设置“Profile only classes”,但没有效果。然后我试图通过将它们设置为“不分析类”来摆脱所有 java.* 和 sun.* 类,这也没有任何效果。
这只是一个错误吗?或者我错过了什么?有解决方法吗?我的意思是除了:
- 为更好的分析器买单
- 手工取样(参见 One could use a profiler, but why not just halt the program?)
- 切换到 Call Tree View ,这不太好,因为只有 Profiler View 为我提供了每个方法消耗的 CPU 百分比。
我想这样做主要是为了获得每个方法消耗的 CPU 的一半正确百分比。为此,我需要摆脱烦人的测量,例如对于 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()
(大约 70%)。许多用户似乎有这个问题,例如参见
最佳答案
您在配置文件中看到 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()
的原因是您选择了选项 Profile new Runnables。
此外,如果您拍摄分析 session 的快照,您将能够看到任何热点方法的整个调用堆栈 - 这样您就可以从 run()
方法向下导航到您自己的方法应用程序逻辑方法,过滤掉 Profile new Runnables 选项产生的噪音。
关于java - 用于 cpu 分析的过滤类在 Java VisualVM 中是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7205612/