0

我想在发生 OutOfMemory 错误时收集线程转储。

我在我的 run.conf 脚本中添加了这个选项:

JAVA_OPTS="${JAVA_OPTS} -XX:OnOutOfMemoryError=/bin/kill -3 %p"

但在启动时我有:

Unrecognized option: -3
Could not create the Java virtual machine.

我试过:

JAVA_OPTS="${JAVA_OPTS} -XX:OnOutOfMemoryError=\"/bin/kill -3 %p\""

进程启动 args 的结果是好的:

.... -XX:OnOutOfMemoryError="/bin/kill -3 %p"  ....

但是启动时的错误是一样的:

Unrecognized option: -3
Could not create the Java virtual machine.
4

1 回答 1

0

这是一个引用问题。Shell 不会将其/bin/kill -3 %p作为单个字符串发送到 JVM。

我建议改用单引号(未经测试):

JAVA_OPTS="${JAVA_OPTS} -XX:OnOutOfMemoryError='/bin/kill -3 %p'"
于 2021-06-07T10:18:18.287 回答