2014-10-06 68 views
3

我想在Windows 7上使用Eclipse开普勒64位一起使用Java的VisualVM和我遇到了以下问题:在Eclipse中运行获取Java程序显示在VisualVM的

我有内部运行Java应用程序Eclipse的,但是当我打开jVisualVM,唯一的项目上显示的是应用本地是VisualVM的本身。

是否有可能让我的Java应用程序也显示出来?我是否需要使用一些命令行参数启动它以允许VisualVM连接?我需要在Eclipse之外运行它吗?

回答

4

由于在Windows JVM的,你需要在同一类的JVM,只要你想连接到(并以相同的用户)

这意味着该程序运行JVisualVM设计特点,使用32位或64位,而不是每一个。

确保这一点的一个简单方法是将JVM添加到JDK安装目录中,该目录包含要用于Eclipse已知的JVM(位于Preferences)中的jvisualvm可执行文件,然后将项目使用的JVM更改为您刚刚添加的JDK中的一个。现在您的应用程序应该在启动时显示在VisualVM窗口中。

+0

如何检查我正在运行的JVM的“种类”?我选择“jre7”作为我的程序的执行环境,并从jdk1.7.0_11目录启动jvisualvm.exe ... – 2014-10-06 17:54:41

+0

将jdk1.7.0._11目录添加到JVM的Eclipse知道(在首选项中)并启动您的程序与此相反。 – 2014-10-06 18:53:25

+0

Got it!我需要添加jdk,选择它作为默认值,然后重新启动Eclipse。那么它的工作。如果你想扩大你的答案,我想接受它。 :) – 2014-10-06 19:53:20

3

您是否尝试过使用VisualVM eclipse launcher?这会自动为您启动虚拟VM。

唯一的变化是当你在eclipse中运行你的主类时,是改变配置使用VisualVM启动器。

enter image description here

+0

这是有效的,是的...我只是感到惊讶,它没有插件没有工作。有点烦人,我不得不在运行配置中选择不同的启动器... – 2014-10-06 18:32:43

+0

是的,它很烦人。我认为eclipse会记住你的主要类的配置。因此,如果您想稍后重新运行该主要方法*而不使用* visualVM,则必须返回并再次将配置更改回JDT。 – dkatzel 2014-10-06 18:34:51

+0

Thorbjørn想出了如何在没有插件的情况下完成工作。现在我可以像往常一样在Eclipse中工作,如果我需要分析某些内容,我可以完全独立于Eclipse运行jVisualVM,并且所有在Eclipse内运行的应用程序都显示出来,并且可以根据需要对其进行配置...我会接受他因为就我而言,它是更“优雅”的解决方案。但为了完整起见,在这里也很好。有些人可能实际上更喜欢使用插件......绝对是一个非常感谢你,也为你+1! – 2014-10-07 03:33:25

0

另一种可能的解决方案,在情况下,它可以帮助别人:重新启动Eclipse。

这是我第一次在新电脑上试用过JVisualVM。 Eclipse在JVisualVM中显示出来,而不是它启动的任何子进程。

我正在撕掉我的头发,尝试各种其他的东西(防火墙,不同的JDK ......)然后这个愚蠢的重新启动只是修复它!


无论如何,如果一切工作正常,规则似乎是:

  • JVisualVM可以连接到和监控使用任何JDK/JRE版本,一样的“位性”的应用程序。
  • 对于完整的功能(如分析)JVisualVM应在相同或更高版本的JDK比应用

随机提示运行(而我们讨论的位数):

  • 浏览内存转储无疑是64位的数百万倍速。 (遗憾的是,我仍然喜欢GUI应用程序的32位-client模式以获得最低的内存使用量,所以我想以这种方式进行配置,但不幸的是速度太慢了。)
0

就发现,可以防止没有显示在JVisualVM Windows下应用程序的另一个,很玄的东西:

JVisualVM使用系统的临时文件夹(由环境变量TMP指定与沟通)运行应用程序出于安全原因,如果此文件夹不位于Windows可以提供严格文件访问控制的NTFS分区上,则调试将被禁用,并且应用程序将不会显示在JVisualVM中。

如果重新格式化分区或移动整个临时文件夹不是您想要的或可以执行的操作,只需在其他位置的NTFS分区上为JVisualVM创建辅助临时文件夹,并将您的启动配置设置为Eclipse将环境变量TMP设置为该文件夹。然后,只需使用下面的批处理文件来运行JVisualVM,一切都应该工作:

@Echo off 
set TMP=F:\temp 
start "JVisualVM" /b "C:\Program Files\Java\jdk1.7.0_76\bin\jvisualvm" 

在这里,你需要用新的临时文件夹的位置,以取代F:\temp在启动配置就像指定和C:\Program Files\Java\jdk1.7.0_76你JDK安装目录。