visualvm 中的堆转储浏览器?

Heap dump browser in visualvm?

我正在远程服务器上使用 VisualVM 监视应用程序 运行 Tomcat 7. 当我尝试打开堆转储浏览器时,我得到的只是一个 window 提示输入要保存的转储文件的路径,但没有浏览器 window。

我开始 tomcat 使用以下变量

export JAVA_OPTS="-Dcom.sun.management.jmxremote=true \ -Dcom.sun.management.jmxremote.port=9090 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false \ -Djava.rmi.server.hostname=host ip"

有没有办法让我在连接到远程应用程序时打开堆转储浏览器window?

遗憾的是,没有直接的方法可以做到这一点。您可以使用 jVisualVM 监视远程 java 进程,但无法进行堆转储。如果您考虑一下,这是有道理的,因为您的堆转储文件 (.hprof) 通常大小为 MB 或 GB,具体取决于您的 运行 java 进程,并且捕获和传输所有文件并不容易该数据是实时的。

如果您可以访问该远程服务器上的 运行 程序,请登录并使用 jmap 通过指向您的 java ProcessID 来获取堆转储,

jmap -dump:file=absolute-path-of-dumpfile ProcessID

然后将转储复制到本地进行分析。

更多信息,你可以参考这个SO link

您实际上可以使用 JProfiler 做到这一点,但这是一个许可工具。我相信试用版不包括远程 JVM 的功能。 Google它。

实际上,您可以从远程应用程序获取 堆转储,但不能立即浏览。该对话框要求您提供为您保存堆转储文件的远程系统上的路径。要在 VisualVM 中打开它,您必须手动将文件传输到本地计算机并使用 File |在 VisualVM 中加载...。