【发布时间】:2010-10-18 02:51:27
【问题描述】:
我运行 JVisualVM(Windows XP、Sun Java 1.6.0.13、32 位客户端 VM)来监控远程应用程序(Linux、Sun Java 1.6.0.07、64 位服务器 VM)。在启动实际的远程应用程序之前,我使用所有访问策略在远程计算机 jstatd 上启动:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
然后我使用命令行启动实际的应用程序
java -Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=3333
compileTest.Main
从客户端机器上,我可以看到远程应用程序并对其进行监控。我也可以进行线程转储等。不幸的是,堆转储按钮是灰色的。
如何使用 JVisualVM 从远程监控的应用程序中获取堆转储?
我尝试使用 jConsole。使用 jConsole,可以使用 com.sun.management.HotSpotDiagnostic dumpHeap 操作进行 distant 堆转储。我希望将转储传输到客户端并使用 JVisualVM 提供的工具进行分析。我该怎么做?
【问题讨论】:
-
以运行 java 进程的同一用户身份运行 jvisualvm 可能会有所帮助
-
@rogerdpack 好点!我导航到这个问题/主题,因为我和stackoverflow.com/questions/8799929/… 有同样的问题,我认为你的陈述/假设是正确的。当我在开发人员 PC/服务器上通过 NetBeans IDE 运行 tomcat/tomee 时,启用了 Sampler>Memory 按钮,但在生产服务器上禁用了 Sampler>Memory 按钮,因为 tomcat/tomee 作为 Windows 服务运行,并且我'm'not' 作为系统或本地服务登录到生产服务。 :(
标签: java monitoring heap-memory jvisualvm