4

我想分析一个小应用程序执行的某个部分。有没有办法从要分析的应用程序中触发 VisualVM 中的数据收集?换句话说,是否可以将代码添加到已分析的应用程序中,以便在 VisualVM 中的分析将在此代码被命中时自动启动?

meaninglessCode();

// How to start data collection?
com.sun.tools.visualvm.....startSampling();
//

codeToBeProfiled();

// How to stop data collection?
com.sun.tools.visualvm.....stopSampling();
//

furtherMeaninglessCode();

我当前的解决方法是Thread.sleep调用让我有时间按下 VisualVM GUI 中的按钮,但这远不能令人满意。几个谷歌搜索没有显示任何成功。我很感激任何提示。

4

1 回答 1

1

您可以使用两个 VisualVM 设置来自定义分析会话,如本博客条目中所述:

  • 分析根:放置类包含codeToBeProfiled()
  • 仪表过滤器:定义您自己的或保留默认值

这样,VisualVM 将在codeToBeProfiled()执行包含的类的任何方法时开始分析。

于 2012-08-13T13:40:00.280 回答