繁体   English   中英

Docker(LXC)容器中的JVM内存分配

[英]JVM Memory Allocation In Docker (LXC) Container

我们已经将JVM(Scala)应用程序(Java 1.7)停靠,并且正在尝试决定如何分配内存。 我们在docker容器中运行了一个应用程序。 如果docker容器分配了4GB的RAM,我们是否应该为JVM分配4GB(或者可能只是为了安全)?

据我了解,除了从入口点调用的内容之外,docker容器中没有其他进程在运行,因此我们不需要担心非JVM内存使用 - 是真的还是过度简化? 我们应该问其他问题吗?

编辑我们正在使用Mesos / Marathon来部署docker图像 - 我相信它确实设置了cgroup对内存的限制(至少,它给人的印象是它确实如此)但我肯定是错的。

我有相同的场景,我使用90%的保留内存到jvm,并且工作得很好

出于问题的目的,将容器视为在主机上运行的进程。

在主机上运行的进程,尽管它有自己的网络,进程等命名空间。

你甚至没有“分配”内存到容器; 如果你喜欢通过cgroups,你可以限制 ,但由于JVM有自己的限制,这是不必要的。

最后,在这种情况下,您控制虚拟内存使用,而不是RAM。

你不能给-Xmx与容器内存相同的值,因为Java需要更多的空间来永久生成(permgen),代码缓存等等。 Warden有其他容器环境的工具。 工具在这里 :我认为它也可以在Docker中使用。 需要测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM