Java 为什么赢了';VisualVM Profiler配置我的Scala控制台应用程序吗?

Java 为什么赢了';VisualVM Profiler配置我的Scala控制台应用程序吗?,java,scala,jvm,profiling,visualvm,Java,Scala,Jvm,Profiling,Visualvm,我假设这个问题与一个有很大关系,但它是封闭的,解决方案对我来说似乎并不清楚 我正在尝试使用VisualVM评测我的控制台Scala应用程序。为此,我启动VisualVM,启动Scala应用程序,在VisualVM中打开其节点,转到“探查器”选项卡并单击“CPU”。按钮变为灰色一段时间(状态从“profiling inactive”一直不变),然后返回活动状态,但不显示任何分析数据 应用程序执行一些文件读取、数据处理(大约需要一分钟)、标准输出和退出。我还尝试将Thread.sleep(60000

我假设这个问题与一个有很大关系,但它是封闭的,解决方案对我来说似乎并不清楚

我正在尝试使用VisualVM评测我的控制台Scala应用程序。为此,我启动VisualVM,启动Scala应用程序,在VisualVM中打开其节点,转到“探查器”选项卡并单击“CPU”。按钮变为灰色一段时间(状态从“profiling inactive”一直不变),然后返回活动状态,但不显示任何分析数据

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

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

java -classpath myapp.jar:lib/* MyApp.Main
所有库(包括
scala library.jar
)都放在
lib/
中。该应用程序按预期工作

更新:

  • 我已经试用过YourKit Java Profiler 11.0.2,但由于
    AttachNotSupportedException
    而失败
  • 我已经设法把你的装备准备好了
  • 似乎值得强调的是,我既没有从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

两天前,我用VisualVM评测了一个Scala应用程序,所以我认为它应该可以工作。以下是我的建议:

  • 从方程式中拿出你的工具箱,在没有它的情况下开始运行
  • 把scala从等式中去掉,试着分析一个Java hello world,它做
    while(true){Thread.sleep(10000);}
  • 让它发挥作用,然后放回Scala,再放回你的装备
编辑:根据您的输入,我建议显式设置远程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

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

Scala创建了一些非常时髦的JVM指令。JVisualVM可能正在寻找由JDKs javac生成的模式,并且被scalac生成的模式弄糊涂了。对于这样一个简单(我也尝试了更长时间的睡眠)Java应用程序,“Profiler”选项卡甚至没有出现在VisualVM中(也没有“Sampler”或“Threads”选项卡):只有“Overview”和“Monitor”可用。