从应用程序内请求Java堆转储(核心转储)
问题内容:
我需要一种 从应用程序内部 请求堆转储 的方法 。
基本原理:当遇到特定的错误情况时,我想转储堆,以便可以看到内存中有什么内容。
但是我想使它自动化(例如,当我检测到某些特定情况发生时。或者当看门狗不再收到ping命令时;当某些测试失败时)。因此,我需要一种从应用程序本身内部转储堆的方法。我似乎无法通过MX
bean的东西找到它。尽管MX
Bean可以通过监视器和“可拥有的同步器”信息,死锁和争用信息给出非常好的堆栈跟踪,但我似乎找不到找到请求堆转储的方法。有什么办法吗?还是通过某种间接方式,例如,这些JVisualVM事情是如何做到的?并且可以告诉JVM在OutOfMemoryExceptions上转储核心。
问题答案: