Java OpenJDK JVM忽略ExitOnOutOfMemoryError

Java OpenJDK JVM忽略ExitOnOutOfMemoryError,java,out-of-memory,Java,Out Of Memory,我有一个Java应用程序在这个Java版本下运行: openjdk版本“1.8.0_162” OpenJDK运行时环境(构建1.8.0_162-8u162-b12-1~deb9u1-b12) OpenJDK 64位服务器虚拟机(构建25.162-b12,混合模式) 我在命令行中指定了选项-XX:+ExitOnOutOfMemoryError。然而,最近我有一个OOME场景,我在日志中看到OOME: java.lang.OutOfMemoryError:无法创建新的本机线程 ,但应用程序仍

我有一个Java应用程序在这个Java版本下运行:

openjdk版本“1.8.0_162”
OpenJDK运行时环境(构建1.8.0_162-8u162-b12-1~deb9u1-b12)
OpenJDK 64位服务器虚拟机(构建25.162-b12,混合模式)
我在命令行中指定了选项
-XX:+ExitOnOutOfMemoryError
。然而,最近我有一个OOME场景,我在日志中看到OOME:

java.lang.OutOfMemoryError:无法创建新的本机线程


,但应用程序仍然可以继续工作,而不会退出。在这种情况下,该选项似乎完全被忽略。我还不确定是什么导致了OOME,但是为什么JVM可以忽略exit选项呢?是否可以采取任何措施来确保如果出现OOME,应用程序不会退出

看起来像是一个。似乎尚未修复

试着对它进行分析,这样你就可以验证它是否真的发生了。@pvg不幸的是,这很难做到,因为这个应用程序是一个大型Java服务器应用程序,到目前为止,我唯一知道的想法是,当OOM发生时,它应该退出,而它不会。我认为在其他Java代码上模拟它不会有多大帮助。我更感兴趣的是关于为什么ExitOnOutOfMemoryError可能无法完成其工作的建议。如果您能够在特定的JVM上实际复制非exit,这将有所帮助。这只需少量代码即可完成。