我必须创建堆转储,它与 jmap 配合得很好。我的问题是,jmap 创建 heapdump 文件需要很长时间。特别是当堆越来越大(> 1GB)时,它花费的时间太长。
一种情况为例:
当服务器遇到堆空间问题时,我想自动重新启动它并在重新启动之前创建一个堆转储。这有效,但编写堆转储需要很长时间。这样服务器停机时间太长了。heapdump 创建需要一个多小时。
我知道-XX:+HeapDumpOnOutOfMemoryError,但大多数时候我可以在 jvm 抛出异常之前找到内存问题。
是否有替代 jmap 的方法可以更快地写入堆转储?
对于上述示例的特殊解决方案也将不胜感激。
这个问题是编程和系统管理之间的混合,但我认为我来对地方了。