使用UseCGroupMemoryLimitForHeap选项在Docker容器中进行JVM动态内存分配

时间:2018-01-04 13:34:57

标签: docker memory-management jvm

我在docker容器中运行JVM。我为具有硬编码值的容器设置了内存限制。我为JVM使用了新的-XX:UseCGroupMemoryLimitForHeap选项。在这种情况下,JVM应根据容器内存分配堆内存。

JVM实际上是这样做的,直到某一点。如果您提供500Mb的容器内存,JVM会按预期分配444.5 MB内存。

然后JVM陷入了1.74 Gb的堆内存。即使给定8Gb的容器内存,JVM仍然会分配1.74 Gb的堆内存。

我可以使用-Xmx选项分配4Gb的堆内存。

如何让JVM尽可能多地分配内存?

1 个答案:

答案 0 :(得分:2)

对于任何人都有同样的问题,

它的本地docker内存限制。我的docker被允许使用2Gb的内存最大值,因此JVM无法分配超过1.74Gb的内存。

我增加了docker可以使用的内存,现在,JVM为4Gb的容器内存分配了3.43Gb的堆。