gpt4 book ai didi

java - Docker容器中的JDK12内存行为

转载 作者:行者123 更新时间:2023-12-02 18:13:33 25 4
gpt4 key购买 nike

据我了解,自JDK12起,旧的实验性标记-XX:+UseCGroupMemoryLimitForHeap已删除,但将成为基线,例如所有JDK12应用程序都会读取cgroup内存,并且默认情况下在内部将其设置为-Xms-Xmx。但是,当我在未指定-XX:+PrintFlagsFinal的情况下运行-Xmx时,它表明我在一个容器中仅为MaxHeap分配了512MB的内存,分配的内存限制为2GB。

我是否错过了某些事情,社区决定删除-XX:+UseCGroupMemoryLimitForHeap标志,而无意支持行为?

最佳答案

这是对的。 Java 12遵守cgroup RAM限制(2GB),并且忽略主机上可用的总RAM(大于2GB)。由于未指定-Xmx,因此默认的JVM行为是使用25%的可用RAM,最终得到512 MB堆。实际上,-Xmx是一个特定的值,它将覆盖-XX:+UseCGroupMemoryLimitForHeap和其他控制动态堆大小的标志。

假设您不想直接指定-Xmx,则很可能要使用-XX:MaxRAMFraction=1,这将使JVM使用100%的可用RAM。请注意under load it may kill the container

关于java - Docker容器中的JDK12内存行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59774874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com