【发布时间】:2022-01-21 16:49:50
【问题描述】:
我们都知道很好的旧标志 +HeapDumpOnOutOfMemoryError 在 JVM 内存不足时进行堆转储。问题在于,对于大型堆,这需要越来越多的时间。
有一种方法可以使用 GNU 调试器进行快速堆转储...
您有效地获取进程的核心文件(非常快),然后使用 jmap 将其转换为 heapdump 格式...这是工作中最慢的部分。
但是,这仅在您手动执行时,当您的 java 应用程序在容器中运行时,通常会有一个固定的超时,直到您的应用程序将被非正常终止...对于 kube,我相信默认为 30 秒。
出于多种原因,我不想将此超时延长到更大的数字。当java内存不足时,有没有办法只触发核心文件转储?或者我们只是受限于+HeapDumpOnOutOfMemoryError 标志提供的任何东西?
【问题讨论】:
标签: java memory-leaks