Java 内存不足自动堆转储文件名
我有几个Java进程,我正在尝试管理发生OOM错误时创建的堆转储。当我说管理时,我的意思是
- 根据原始进程以不同的方式命名堆转储
- 删除较旧的堆转储以保留磁盘空间
当在 OOM 上转储堆时
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp
JVM 在指定的 /tmp 文件夹中创建一个具有以下名称java_pidXXXX.hprof 的文件(其中 XXXX 是进程的 PID)。是否无论如何都可以指定使用 PID 和 DATE 创建文件名的不同格式?在谷歌搜索了一个小时后,我尝试myPrefix_$,{pid},'date'。等。唯一有效的两件事是
- 不指定文件名,您将获得java_pidXXXX.hprof
- 指定一个静态文件名,例如 \tmp\OOM.hprof。
如果 \tmp 文件夹不存在,则不会创建它,也不会创建堆转储。
可以使用的一个想法是在OOM错误上添加命令
-XX:OnOutOfMemoryError="doSomething.sh %p"
但我试图避免它,因为我需要部署“doSomething.sh”