docker - 带有UseCGroupMemoryLimitForHeap选项的Docker容器中的JVM动态内存分配

标签 docker memory-management jvm

我正在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/

相关文章:

Java Maven 项目 Docker 集成测试

authentication - 在 docker config 中保存 docker 凭据

Docker 服务在一段时间后停止通信

objective-c - 这两个 Objective-C 消息表达式在内存方面是否等效?

java - 如何在 Android 上使用 swi-prolog

amazon-web-services - meteor 在本地或AWS主机上构建

.net - 如何检查我的对象是否已正确处置?

ios - 释放 iOS 中 ARC 下的 NSMutableDictionary 内存

java - Windows Server 2008 上的 64 位 Java 8 或多或少使用整个服务器 CPU

java - 转换为 Dalvik 失败 - 某处未初始化的变量