jvm配置

参数名 含义与作用 建议
-XX:InitialRAMPercentage=80.0 设置初始堆内存为容器可用总内存的80%。 配置将80%的容器内存都分配给了堆,这意味着只剩下20%的内存用于元空间、线程栈、直接内存、GC开销以及JVM自身等。这存在导致容器因总内存超限而被系统强制终止(OOMKilled)的风险
。一般建议将 MaxRAMPercentage设置在70%到85%之间,并为非堆内存预留充足空间
-XX:MaxRAMPercentage=80.0 设置最大堆内存为容器可用总内存的80%。适用于容器内存大于约250MB的场景 。
-XX:MinRAMPercentage=80.0 设置最大堆内存为容器可用总内存的80%。但仅当容器内存小于约250MB时生效 。
-XX:MetaspaceSize=200m 设置元空间触发垃圾回收(GC)的初始阈值为200MB 。 MetaspaceSizeMaxMetaspaceSize设置一样大;

具体设置多大,建议稳定运行一段时间后通过jstat -gc pid确认且这个值大一些,对于大部分项目256m即可。 |

问题概述:

根本原因:

解决方案:

升级到支持 cgroup v2 的 JDK 版本:

验证结果:

升级 JDK 后,堆内存从错误的 23.44G 变为正确的 792M,解决了 OOMKill 问题。

资料

https://blog.csdn.net/u011381576/article/details/79635867