我正在尝试使用Eclipse VisualVM launcher。它似乎很不错,除了它似乎产生一个实例,如果VisualVM来不及我的应用程序的任何分析。我的应用程序在分析器甚至初始化之前完成执行;一旦启动,会弹出一个错误窗口,说:cannot open requested application
。然后它显示运行Eclipse的VM(标记为“org.eclipse.equinox.launcher.Main”)。如何让它等待我的应用程序并进行适当的分析?
答案 0 :(得分:14)
这可能为时已晚,但我遇到了同样的问题,设置断点然后在调试模式下启动并没有任何帮助。我最终发现VisualVM将其临时数据保存在我的Windows机器上的文件夹%TMP%/ hsperfdata_ [username]中,例如C:\ Users \ Jacob \ AppData \ Local \ Temp \ hsperfdata_Jacob。事实证明,该进程没有足够的权限来访问该文件夹,所以我放宽了对它的权限,现在它工作得很好。希望这对遇到同样问题的人有用!
答案 1 :(得分:9)
我知道那个问题。我总是想出的唯一一个穷人的解决方案是:
VisualVM只需要一点时间就可以将配置代理注入到您的VM中,我非常确定它只允许进行远程分析。
作为替代方案,您可以使用YourKit,它可以从一开始就对您的应用程序进行概要分析。这样,在VM启动时注入概要分析代理:
java -agentpath:c:\yourkit\yjpagent.dll FooClass
我很好奇为什么VisualVM不提供此选项,因为它在技术上是可行的。无论如何,我认为调试技巧是Eclipse中的一个很好的解决方案,除非你也对类加载等感兴趣。
答案 2 :(得分:5)
在Windows上,以管理员身份运行Eclipse。
答案 3 :(得分:0)
这是一个愚蠢的解决方案,但有效。在这里:
为您的应用添加无限循环包装,例如“while(true){your_app}”。
当你的程序运行时间更长时,定时噪音也会消失。
答案 4 :(得分:-1)
您只需要以管理员用户身份运行 VisualVM 可执行文件(Windows 10)。