如何在我的 LAN 上分析 Java 应用程序 运行?

How can I profile a Java application running on my LAN?

我正在尝试通过 JVisualVM 在我的 LAN 上分析一个 Java 应用程序 运行。

但是,当我使用以下参数启动我的程序时:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=9000
-Dcom.sun.management.jmxremote.ssl=false

我无法通过 JVisualVM、JMX 或 jstatd 进行连接。

9000当然是转发了,服务器用的是Ubuntu.

默认情况下,JMX 将打开除 -Dcom.sun.management.jmxremote.port 指定的端口之外的另一个随机端口。由于Java 7u25,你可以将此端口设置为固定值:

-Dcom.sun.management.jmxremote.rmi.port=1234

您可以将其设置为与-Dcom.sun.management.jmxremote.port相同的端口。有关详细信息,请参阅 this answer

如果您仍然遇到连接问题,请尝试使用 JConsole 进行调试。有关详细信息,请参阅 this question 的答案。