13

我正在尝试使用 Eclipse VisualVM启动器。看起来很不错,只是如果 VisualVM 来不及对我的应用程序进行任何分析,它似乎会生成一个实例。我的应用程序甚至在分析器初始化之前就完成了执行;一旦启动,就会弹出一个错误窗口,说:cannot open requested application. 然后它显示运行 Eclipse 的 VM(标记为“org.eclipse.equinox.launcher.Main”)。我怎样才能让它等待我的应用程序并进行正确的分析?

4

5 回答 5

16

这可能为时已晚,但我遇到了同样的问题,设置断点然后在调试模式下启动根本没有帮助。我最终发现 VisualVM 将其临时数据保存在文件夹 %TMP%/hsperfdata_[username] 中,例如,在我的 Windows 机器上,该文件夹是 C:\Users\Jacob\AppData\Local\Temp\hsperfdata_Jacob。事实证明,该进程没有足够的权限来访问该文件夹,所以我放宽了它的权限,现在它工作得很好。希望这对有同样问题的人有用!

于 2012-09-09T07:41:17.783 回答
10

我知道那个问题。我一直想出的唯一穷人的解决方案是:

  1. 在源代码中设置断点
  2. 以调试模式启动程序
  3. 连接分析器
  4. 让程序继续

VisualVM 将分析代理注入您的 VM 只需要一点时间,我很确定它只允许远程分析。

作为替代方案,您可以使用YourKit,它可以从一开始就分析您的应用程序。通过这种方式,分析代理在 VM 启动时被注入:

java -agentpath:c:\yourkit\yjpagent.dll FooClass

我很好奇为什么 VisualVM 不提供这个选项,因为它在技术上是可行的。无论如何,我认为调试技巧是 Eclipse 中的一个很好的解决方案,除非您也对类加载等感兴趣。

于 2012-08-09T21:16:45.823 回答
7

在 Windows 上,以管理员身份运行 Eclipse。

于 2013-08-12T13:21:00.657 回答
0

这是一个愚蠢的解决方案,但有效。它是这样的:

向您的应用程序添加一个无限循环包装器,例如“while(true) { your_app }”。

随着程序运行时间的延长,计时噪音也会变得均匀。

于 2013-09-21T20:21:13.507 回答
-1

您只需以管理员用户 (Windows 10) 的身份运行 VisualVM 可执行文件。

于 2021-05-08T22:43:24.107 回答