Ich laufen JVisualVM (Windows XP, Sun Java 1.6.0.13, 32-Bit-Client-VM), um eine entfernte Anwendung (Linux, Sun Java 1.6.0.07, 64-Bit-Server-VM). Vor der eigentlichen Remote-Anwendung starten, starte ich auf der entfernten Maschine jstatd
eine alle Zugriffsrichtlinie mit:Get Heap Dump von einer Remote-Anwendung in Java mit JVisualVM
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
Dann beginne ich die eigentliche App über die Befehlszeile
java -Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=3333
compileTest.Main
der Client-Maschine, ich kann die entfernte App sehen und überwachen. Ich kann auch einen Thread-Dump usw. machen. Leider ist der Heap-Dump-Button ausgegraut.
Wie kann ich mit JVisualVM einen Heap-Dump von einer fernüberwachten Anwendung erhalten?
Ich habe versucht mit jConsole. Mit jConsole ist es möglich, einen entfernten Heap-Dump mit der Operation com.sun.management.HotSpotDiagnostic dumpHeap zu erstellen. Ich möchte, dass der Dump auf die Clientseite übertragen und mit den von JVisualVM bereitgestellten Tools analysiert wird. Wie kann ich das machen?
jvisualvm als der Benutzer ausgeführt wird, der den Java-Prozess ausgeführt wird, kann – rogerdpack
@rogerdpack guten Punkt helfen! Ich navigierte zu dieser Frage/Thema, da ich die gleiche Frage wie http://stackoverflow.com/questions/8799929/visualvm-unable-to-sampler-memory habe, und ich denke, Ihre Aussage/Annahme ist richtig. Wenn ich tomcat/tomee über meine NetBeans-IDE auf meinem Entwickler-PC/-Server starte, ist die Schaltfläche Sampler> Memory aktiviert, aber die Schaltfläche Sampler> Memory ist auf dem Produktionsserver deaktiviert, da tomcat/tomee als Windows-Dienst ausgeführt wird Ich bin nicht als System- oder lokaler Dienst in den Produktionsdienst eingeloggt. :( – Howard