How can I take a heap dump on Java 5 without garbage collecting first?

会有一股神秘感。 提交于 2019-12-17 19:49:32

问题


We have a long running server application running Java 5, and profiling it we can see the old generation growing slowly over time. It's correctly freed on a full GC, but I'd like to be able to look at the unreachable objects in Eclipse MAT using a heap dump. I've successfully obtained a heap dump using +XX:HeapDumpOnCtrlBreak, but the JVM always does a GC before dumping the heap. Apparently this doesn't happen on Java 6 but we're stuck on 5 for now. Is there any way to prevent this?


回答1:


I suggest a 3rd-party profiler such as YourKit, which may allow you to take snapshots without kicking off the GC first. Added bonus, you can take a snapshot without the whole ctrl-break shenanigans.




回答2:


use jconsole or visualvm or jmc or ... other jmx management console. open HotSpotDiagnostic in com.sun.management. select method dumpHeap and input two parameters:

  • path to the dump file
  • (true/false) dump only live objects. use false to dump all objects.

Note that the dump file will be written by the JVM you connected to, not by JVisualVM, so if the JVM is running on a different system, it will be written on that system.




回答3:


Have you tried the standard jmap tool shipped with the JDK? The jmap toll was officially introduced in Java 5.

Example command line: /java/bin/jmap -heap:format=b

The result can be processed with the standard jhat tool or with GUI applications such as MAT.




回答4:


I have some code here that can programmatically take a heap dump over JMX:

Link: JmxHeapDumper.java

The comments in the source code contain 2 links to articles that contained useful information about how to take heap dumps. I don't know for sure but if you are in luck, perhaps the JMX approach would have some way of avoiding the GC. Hope this helps !




回答5:


jProfiler (ej-technologies) can do this.



来源:https://stackoverflow.com/questions/1268336/how-can-i-take-a-heap-dump-on-java-5-without-garbage-collecting-first

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!