Do you have a java server - maybe in production - and you want to look at the value of some field ? You can't attach a debugger, this would require starting the server with various flags - but you can get a heap dump, which includes all objects, including the value of their fields.
The other use is to generate a heap dump before and after running a load test - and look at garbage to evaluate how much work you put on the garbage collector and find leaks. There are profilers that can get better results - but this is pretty fast and free way to get the same result, and you can use it against running systems.
Getting heap dumps:
jmap -dump:format=b,file=heap3.bin PID_OF_JAVA_PROCESS
Using code ( in a servlet, etc ):
server = ManagementFactory.getPlatformMBeanServer(); server.invoke(new ObjectName("com.sun.management:type=HotSpotDiagnostic"), "dumpHeap", new Object[] {fileName, Boolean.TRUE}, new String[] {String.class.getName(), "boolean"});
Looking at the data:
Eclipse MemoryAnalyzer
or
jhat heap3.bin
open http://localhost:7000
No comments:
Post a Comment