我在docker容器中运行JVM。我为具有硬编码值的容器设置了内存限制。我为JVM使用了新的-XX:UseCGroupMemoryLimitForHeap
选项。在这种情况下,JVM应根据容器内存分配堆内存。
JVM实际上是这样做的,直到某一点。如果您提供500Mb的容器内存,JVM会按预期分配444.5 MB内存。
然后JVM陷入了1.74 Gb的堆内存。即使给定8Gb的容器内存,JVM仍然会分配1.74 Gb的堆内存。
我可以使用-Xmx
选项分配4Gb的堆内存。
如何让JVM尽可能多地分配内存?
答案 0 :(得分:2)
对于任何人都有同样的问题,
它的本地docker内存限制。我的docker被允许使用2Gb的内存最大值,因此JVM无法分配超过1.74Gb的内存。
我增加了docker可以使用的内存,现在,JVM为4Gb的容器内存分配了3.43Gb的堆。