19

如果我在 cygwin 控制台中启动 java 进程,然后启动 visualVm,​​则后者看不到前者。

如果我在 Dos 控制台中启动相同的进程,visualvm 会很好。我在jdk1.6.0_25。这发生在 win7 32b 和带有 64b jvm 的 win7 64b 中。

任何人都可以想到一个解释/解决方法?

4

4 回答 4

13

我通过在 Cygwin 中运行 VisualVM 解决了这个问题。如果您不想使用远程 JMX 连接进行分析,则可以使用 Cygwin 运行 VisualVM 和 Java 程序:

打开 Cygwin 控制台窗口,导航到 visual_vm.exe 并从 Cygwin 环境中运行该文件。

于 2012-02-07T13:01:45.527 回答
4

我有同样的问题。vm 没有自动显示,但我能够通过“添加 JMX 连接”使用主机名和 jmx.remote.port 进行连接...

在 VisualVM 上,转到文件 -> 添加 JMX 连接

localhost:3333

在启动时添加 vm 参数,例如:

 -Dcom.sun.management.jmxremote.port=3333
 -Dcom.sun.management.jmxremote.ssl=false
 -Dcom.sun.management.jmxremote.authenticate=false
于 2011-07-13T13:13:29.590 回答
2

VisualVM 可以自动检测在同一用户下运行的本地应用程序。所以一种解释可能是 cygwin 进程在不同的用户下运行。确保 VisualVM 和受监控的应用程序都在 JDK 6 更新 25 下运行。JDK 6 更新 25 修复了以下JDK 错误 #6938627,这可能会影响您的情况。

于 2011-07-14T13:56:34.750 回答
0

@seanhodges 答案的相反方法是启动应用程序以使用修改后的环境进行调试,将其指向您的 Windows 用户临时目录

例如,如果您通常这样做:

    ./gradlew run

并说您在 Windows 上的 TEMP 目录(根据您的用户环境变量)是:

    T:\Temp

您可以改为执行以下操作之一:

    TMP=T:\\Temp ./gradlew run

    TMP=/cygdrive/t/Temp ./gradlew run

(他们似乎都工作)

于 2019-10-24T12:54:09.267 回答