它说JDK11已经默认使用-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap
但是,我仍然收到错误 137
,并且当我输入 free -h
时,我看到 OOM killer 并且有大量可用内存(超过 1GB)
是否仍需要 -Xmx
来防止 OOM 错误?
最佳答案
这两个参数适用于 JVM 在容器(如 docker 容器)内运行时的情况。这些参数限制容器内资源(CPU 和内存)的使用。
当您创建的对象/实例多于可用堆大小时,会发生内存不足 (OOM) 错误。上面的两个参数限制堆大小...所以如果你创建更多,你仍然会出现OOM错误。
这两个参数与限制堆大小(最大和最小)的 Xmx 和 Xms 选项无关。请注意,JVM 是 VM 的一种形式,您可以指定(至少在理论上)大于可用内存(容器或主机)的 Xmx。
我希望这能回答您的问题。
关于java - 当将 `openjdk:11` 或 `openjdk:8` 与 CGroup 的实验标志一起使用时,是否仍需要 `-Xmx`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55056165/