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

Pat*_*ite 7 java jvm docker

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

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

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

Bry*_*yan 0

出于您的问题的目的,请像对待主机上运行的进程一样对待您的容器。

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

您甚至不为容器“分配”内存;如果您愿意,可以通过 cgroup进行限制,但由于 JVM 有其自己的限制,因此这是不必要的。

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