我尝试在Eclipse 7开发的64位Windows上使用Java VisualVM,遇到以下问题:
我在Eclipse中运行了一个Java应用程序,但是当我打开jVisualVM时,唯一显示在 Local 下 Applications 中的项目em> 是VisualVM本身。
是否可以显示我的Java应用程序?我是否需要使用某些命令行参数启动它以允许VisualVM连接?我是否需要在Eclipse之外运行它?
答案 0 :(得分:5)
由于Windows JVM中的设计特性,您需要在与要连接的程序(以及作为同一用户)相同类型的JVM中运行JVisualVM
这意味着,使用32位或64位,而不是每个。
确保这一点的一种简单方法是将JDK安装目录中的JVM添加到Eclipse中已知的JVM(在Preferences中),然后将项目使用的JVM更改为您刚刚添加的JDK中的一个。现在,您的应用程序应在启动时显示在VisualVM窗口中。
答案 1 :(得分:3)
答案 2 :(得分:0)
另一种可能的解决方案,以防其他人:重启Eclipse。
这是我第一次在新电脑上试用JVisualVM。 Eclipse出现在JVisualVM中,而不是它启动的任何子进程。
我正在撕掉我的头发,尝试各种其他东西(防火墙,不同的JDK ......)然后这个愚蠢的重新启动只是修复了它!
无论如何,如果一切运作良好,规则似乎是:
随机提示(当我们讨论比特时):
-client
模式以获得最低的内存使用量。所以我也想以这种方式对它们进行分析,但遗憾的是它的速度非常慢。)答案 3 :(得分:0)
刚刚找到另一个相当模糊的东西,它可以阻止你的应用程序出现在Windows下的JVisualVM中:
JVisualVM使用系统的临时文件夹(由环境变量In [1]: import numpy as np
In [2]: a = [1,2,3,4]
In [3]: a.T
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-3-9f69ed463660> in <module>()
----> 1 a.T
AttributeError: 'list' object has no attribute 'T'
In [4]: a = np.array(a)
In [5]: a.T
Out[5]: array([1, 2, 3, 4])
In [6]:
指定)与正在运行的应用程序进行通信。出于安全原因,如果此文件夹不在Windows可以提供严格文件访问控制的NTFS分区上,则禁用调试并且应用程序不会显示在JVisualVM中。
如果重新格式化该分区或移动整个临时文件夹不是您想要或可以做的事情,您只需为其他地方的NTFS分区上的JVisualVM创建辅助临时文件夹,并在Eclipse中设置启动配置以设置该文件夹的环境变量TMP
。然后,只需使用以下批处理文件来运行JVisualVM,一切都应该有效:
TMP
在这里,您需要将@Echo off
set TMP=F:\temp
start "JVisualVM" /b "C:\Program Files\Java\jdk1.7.0_76\bin\jvisualvm"
替换为新临时文件夹的位置,就像启动配置中指定的那样,F:\temp
替换为您的JDK安装目录。