Java:如何指定 JVM 参数 -XX:ErrorFile 并在文件名中保留自动 PID

Posted

技术标签:

【中文标题】Java:如何指定 JVM 参数 -XX:ErrorFile 并在文件名中保留自动 PID【英文标题】:Java: How to specify JVM argument -XX:ErrorFile and preserve automatic PID in filename 【发布时间】:2014-05-02 08:26:16 【问题描述】:

我正在使用 JNI,当由于目标应用程序中的错误而导致崩溃时,会生成一个 hs_err_pid*.log 文件。我想更改存储该文件的默认位置。 现在,通过四处搜索,我了解到这可以使用 JVM 参数 -XX:ErrorFile 来实现。

documentation 表示此参数的默认值为 ./hs_err_pid<pid>.log

现在,当我覆盖默认值时,如何告诉 JVM 仍然在文件名中包含进程 ID? 我显然试图将 targetDir/hs_err_pid<pid>.log 作为命令行参数,但这导致整个参数被忽略(并且文件被存储到默认位置,即工作目录) . 如果我只说 targetDir/hs_err_pid.log 文件存储在我想要的位置,但不会获得附加到文件名的进程 ID。

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

试试

-XX:ErrorFile=targetDir/hs_err_pid_%p.log

【讨论】:

哇,真快。这看起来正是我想要的。明天将在工作中测试并发布结果。 完美。像魅力一样工作! 如何测试/模拟这个?我的意思是,我怎样才能导致 JVM 崩溃并在这个错误文件中写入一些东西?【参考方案2】:

在 Windows 中:

-XX:ErrorFile=C:\targetDir\hs_err_pid_%%p.log

【讨论】:

两个百分号?

以上是关于Java:如何指定 JVM 参数 -XX:ErrorFile 并在文件名中保留自动 PID的主要内容,如果未能解决你的问题,请参考以下文章

给 运行在 k8s 里的 springboot 指定 jvm 参数

jinfo 干涉java runtime的jvm参数

如何设置myeclipse的jvm启动参数

不需要再手工指定JVM启动参数-XX:+UseCompressedOops

不需要再手工指定JVM启动参数-XX:+UseCompressedOops

不需要再手工指定JVM启动参数-XX:+UseCompressedOops