我正在试用新 JDK 附带的 VisualVM 程序。我正在对其进行分析,并尝试仅在特定包中的方法上分析 CPU。
我将以下内容放在“仅配置文件的类”中:
jig.*
jig 是我想要检测的包。不幸的是,我得到了不在该包或任何子包中的其他方法的结果。
我可以重现您的问题的唯一方法是选中“Profile new Runnables”框。当我保持选中状态时,分析器会拾取作为新线程启动的代码,即使该代码不符合过滤条件。我想这是不清楚的功能。
在进行分析活动之前,您应该确保取消选中该框。请注意,如果未选中它,这可能意味着您将看不到您自己的任何代码的配置文件信息,这些代码恰好作为单独的线程启动。(但我认为你很有可能不这样做,所以你没有什么可担心的。)
实际上有一个关于此的已打开错误:
https://java.net/jira/browse/VISUALVM-546
我完全同意提交者(以及您对 VisualVM 的“奇怪”行为感到失望)。即使选中了“Profile new Runnables”,我认为过滤器也必须得到尊重。
分析它是一项重要的任务,特别是对于通常部署在应用程序服务器上的大型项目,它是常用方式(和正确方式)具有用于后台任务和服务用户请求的线程。
我邀请大家投票支持 VisualVM 开发人员的关注。
您可以在“Profiling Results”列表底部的文本字段中输入过滤标准,这应该可以解决问题。