能否通过JVM参数自定义崩溃minidump的输出路径与命名规则?
Java 8u60 32位版本minidump输出路径配置解答
核心结论
- Oracle JDK/OpenJDK 8 全版本(包括你使用的8u60 32位版本)中,
-XX:+CreateMinidumpOnCrash生成的minidump文件不支持通过独立JVM参数自定义输出路径与命名规则,你此前查阅资料得到的初步判断准确。 - 该参数触发生成的Windows平台minidump,默认写入JVM进程的当前工作目录,文件名为固定格式
hs_err_pid<进程ID>.mdmp。
可用替代方案
如果需要将minidump定向到无写保护的D盘路径,可通过以下两种方式实现:
- 调整JVM启动的工作目录
启动JVM前先切换到目标D盘路径,再执行Java启动命令,minidump会自动输出到当前工作目录下。Windows平台操作示例:
D: cd D:\jvm_dump\ java -XX:+CreateMinidumpOnCrash -XX:ErrorFile=D:\jvm_dump\hs_err_pid%p.log -jar 你的应用包.jar
- 配置Windows系统全局崩溃转储规则
全局规则优先级高于JVM自身的minidump生成逻辑,配置后所有java.exe进程的崩溃转储都会定向到指定路径:
- 打开注册表编辑器,定位到路径
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps - 新建名为
java.exe的子项,在子项内新建两个注册表值:- 字符串值
DumpFolder,数值数据设为D:\jvm_dump\ - DWORD值
DumpType,数值数据设为2(对应完整转储)
- 字符串值
版本差异说明
JDK 9及以上版本官方新增了-XX:MinidumpPath参数,专门用于自定义minidump输出路径,但该参数没有向后兼容到JDK 8的任何更新版本,无法在8u60版本中使用。
内容的提问来源于stack exchange,提问作者Jake Henry
相关产品推荐
相关产品推荐

