在java中,有最小堆空间( -Xms)和最大堆空间( -Xmx)。最小堆空间从一开始就分配给JVM,“最大堆空间”是JVM在到达它时会说“超出堆空间”的限制。
Openshift/Kubernetes中的pod是否有不同的值(initial和limit),或者由于某种原因,初始内存分配总是等于limit?
发布于 2021-11-08 08:56:45
对于现代的Java版本(支持+UseContainerSupport的版本),K8s或Openshift Pod中的堆分配依赖于容器可用的内存。
这完全由"containers.resources.limits.memory“值决定(正如您推测的那样)。其他值,例如"containers.resources.requests.memory“不会在其中起作用。如果没有设置资源限制,则相应集群节点的整个内存将用于初始堆大小的人体工程学,这是OOM杀死的可靠配方。
发布于 2021-11-05 12:25:56
在K8s中,资源被定义为请求和限制。该请求是针对初始分配的,当pod达到内存限制时,它将获得OOMKILLED,然后将重新启动,因此我认为它的行为与您所描述的相同。
https://stackoverflow.com/questions/69842248
复制相似问题