为什么VisualVM Profiler不会配置我的Scala控制台应用程序?

Iva*_*van 8 java profiling jvm scala visualvm

我认为这个问题与这个问题密切相关,但它已经关闭,解决方案对我来说似乎并不清楚.

我正在尝试使用VisualVM来配置我的控制台Scala应用程序.我这样做是通过启动VisualVM,启动我的Scala应用程序,在VisualVM中打开它的节点,转到"Profiler"选项卡并单击"CPU".按钮变为灰色一段时间(状态永远不会变为"分析非活动"),然后返回活动状态,但不显示任何分析数据.

该应用程序执行一些文件读取,数据处理(大约需要一分钟),stdout数据输出和退出.我还尝试添加Thread.sleep(60000)到程序的开头和结尾,以确保有足够的时间让VisualVM捕获它并完成工作,但没有任何改变.

与我链接到的相关问题不同,我没有从Eclipse或其他任何东西启动我的应用程序 - 我使用以下命令行启动它:

java -classpath myapp.jar:lib/* MyApp.Main
Run Code Online (Sandbox Code Playgroud)

所有库(包括scala-library.jar)都放入了lib/.该应用程序按预期工作.

更新:

  • 我已经尝试过YourKit Java Profiler 11.0.2但它失败了 AttachNotSupportedException.
  • 我通过手动附加代理来管理YourKit .
  • 似乎值得强调的是,我既没有从IDE(或构建工具)运行应用程序,也没有修改任何JVM选项而是修改了类路径.据我所知,这个问题似乎取决于JVM版本和用户/权限问题.目标是找出问题的实际机制以及配置所有工作的方法.

使用的软件版本:

  • YourKit Java Profiler 11.0.2
  • VisualVM 1.3.4
  • SBT 0.12.3(构建但不运行(我实际上都试过))
  • Scala 2.9.2
  • Oracle Java 1.7.0_04-b20
  • XUbuntu Linux 12.04 32位i386
  • Linux内核3.2.0-24-generic-pae

huy*_*hjl 5

两天前,我已经使用VisualVM对Scala应用程序进行了概要分析,因此我认为它应该可以工作。这是我的建议:

  • 从等式中取出YourKit,并在没有初学者的情况下运行它
  • 从等式中删除scala,尝试分析执行以下操作的Java hello世界 while (true) { Thread.sleep(10000); }
  • 让它工作,然后放回Scala,然后放回YourKit。

编辑:根据您的输入,我建议显式设置远程JMX连接。您可以使用以下选项启动java:

-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=20000
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Run Code Online (Sandbox Code Playgroud)

然后在VisualVM中,将JMX连接添加到localhost:20000

  • 对于这样一个简单的(我也尝试过更长的睡眠时间)Java 应用程序(“采样器”或“线程”选项卡也没有),VisualVM 中甚至没有出现“Profiler”选项卡:只有“概述”和“监视器”可用。 (2认同)