【发布时间】:2018-01-04 13:34:57
【问题描述】:
我在 docker 容器中运行 JVM。我为具有硬编码值的容器设置了内存限制。我使用新的-XX:UseCGroupMemoryLimitForHeap JVM 选项。在这种情况下,JVM 应该根据容器内存分配堆内存。
在某种程度上,JVM 确实做到了。如果您提供 500Mb 的容器内存,JVM 会按预期分配 444.5 MB 内存。
但随后 JVM 卡在 1.74 Gb 的堆内存上。即使给定 8Gb 的容器内存,JVM 仍然分配 1.74 Gb 的堆内存。
我可以使用-Xmx 选项分配 4Gb 的堆内存。
如何让 JVM 分配尽可能多的内存?
【问题讨论】:
-
你能贴出你正在使用的所有 jvm 标志吗?
-
-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1但我解决了这个问题。实际上没有问题。这些标志按预期工作,并且 JVM 分配尽可能多的内存。问题是我的 docker 内存限制。
标签: docker memory-management jvm