Request java heap dump (core dump) from within application

本秂侑毒 提交于 2019-12-18 04:05:25

问题


I need a way to request a heap dump from within the application.

Rationale: When I encounter a specific error condition, I'd like to dump heap, so that I can see what is holding on to the memory.

But I would like to automate this (For example, when I detect that some specific condition has occurred. Or when a watchdog doesn't gets its pings anymore. When some test fails). Thus I need a way to dump the heap from within the application itself. I can't seem to find it with the MX beans stuff. Although the MX Beans can give very nice stack traces with monitor and "ownable synchronizer" info, deadlock and contention info, I can't seem to find a way to request a heap dump. Are there any such way? Or by some indirect means, for example how does these JVisualVM things do it? And one can tell the JVM to dump core on OutOfMemoryExceptions..?


回答1:


If it's not enough to dump heap on OutOfMemoryError, there's a HotSpot-dependent way of programmatically dumping heap from Java applications, if that's OK.




回答2:


What about using the VM option -XX:+HeapDumpOnOutOfMemoryError to tell the HotSpot VM to generate a heap dump when it runs out of memory?



来源:https://stackoverflow.com/questions/1818897/request-java-heap-dump-core-dump-from-within-application

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