我正在Docker容器中运行JVM。我用硬编码值设置了容器的内存限制。我将新的-XX:UseCGroupMemoryLimitForHeap
选项用于JVM。在这种情况下,JVM应该根据容器内存分配堆内存。
JVM实际上可以做到这一点。如果提供500Mb的容器内存,那么JVM将按预期分配444.5 MB内存。
但是随后,JVM被卡在了1.74 Gb的堆内存中。即使给定了8Gb的容器内存,JVM仍会分配1.74 Gb的堆内存。
我可以使用-Xmx
选项分配4Gb的堆内存。
如何让JVM分配尽可能多的内存?
最佳答案
对于任何有相同问题的人,
这是本地docker内存限制。我的 docker 被允许使用最大2Gb的内存,因此JVM不能分配超过1.74Gb的内存。
我增加了docker可以使用的内存,现在,JVM为4Gb的容器内存分配了3.43Gb的堆。
关于docker - 带有UseCGroupMemoryLimitForHeap选项的Docker容器中的JVM动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48096501/