【发布时间】:2019-05-15 21:38:30
【问题描述】:
我想防止JVM生成崩溃日志文件,所以我的启动脚本是这样的
java -XX:ErrorFile=/dev/null MyClass
但是当发生 jvm 崩溃时,日志文件 'hs_err_pidXXXXX.log' 仍然会在当前工作目录中生成。为什么?
操作系统:ubuntu 18.04,java版本:oracle java 10
【问题讨论】:
标签: java jvm java-native-interface
我想防止JVM生成崩溃日志文件,所以我的启动脚本是这样的
java -XX:ErrorFile=/dev/null MyClass
但是当发生 jvm 崩溃时,日志文件 'hs_err_pidXXXXX.log' 仍然会在当前工作目录中生成。为什么?
操作系统:ubuntu 18.04,java版本:oracle java 10
【问题讨论】:
标签: java jvm java-native-interface
如果指定给-XX:ErrorFile 的文件存在,或者无法打开,则JVM 回退到默认的hs_err_pid 错误文件路径。由于/dev/null 可能存在,这可以解释这种行为。
我浏览过OpenJDK JVM源码,对应Oracle的HotSpot,在这方面的报错代码中似乎没有对/dev/null进行特殊处理。
有关 JVM 维护人员提供的更多详细信息和 cmets,请参阅以下 OpenJDK 错误报告: https://bugs.openjdk.java.net/browse/JDK-8189672
【讨论】:
-XX:+SuppressFatalErrorMessage 完全禁用错误报告。也可以在创建后立即删除日志文件:-XX:OnError="rm hs_err_pid%p.log"