OpenJDK JVM 忽略 ExitOnOutOfMemoryError

OpenJDK JVM ignores ExitOnOutOfMemoryError

我在这个 Java 版本下有一个 Java 应用程序 运行: openjdk version "1.8.0_162" OpenJDK Runtime Environment (build 1.8.0_162-8u162-b12-1~deb9u1-b12) OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode) 并且我在命令行上指定了选项 -XX:+ExitOnOutOfMemoryError。但是最近我遇到了 OOME 场景,我在日志中看到了 OOME: java.lang.OutOfMemoryError: unable to create new native thread

,但应用程序愉快地继续工作,没有退出。看起来在这种情况下该选项被完全忽略了。我不确定是什么导致了 OOME,但为什么 JVM 可以忽略退出选项?是否可以采取任何措施来确保 OOME 发生时应用程序确实退出?

看起来是 known JVM issue。貌似还没有修好。

当无法分配内存或创建新的本机线程时,您可以使用 jvmkill JVMTI 代理终止 JVM。