背景:
我用 Docker 来跑一个 java 应用,在 Docker 层限制了容器的内存大小为 1G 。
然后使用命令 java -Xms3G -Xmx3G javaapp 在容器里面启动应用,应用也可以正常启动。
问题来了,-Xms ,-Xmx 都为 3G ,但我分配给这个 Docker 容器的内存并没有 3G ,只有 1G 。
问题 1 :
为什么 java 应用还可以启动?
问题 2 :
这时候-Xms 的值和-Xmx 的值是如何分配的?
注:
1.Docker 物理机的 内存为8G,Swap 为 0。
2.上面的 java 应用在 Docker 运行一段时间后,就会发生 oom ,被系统 kill 掉了。
我用 Docker 来跑一个 java 应用,在 Docker 层限制了容器的内存大小为 1G 。
然后使用命令 java -Xms3G -Xmx3G javaapp 在容器里面启动应用,应用也可以正常启动。
问题来了,-Xms ,-Xmx 都为 3G ,但我分配给这个 Docker 容器的内存并没有 3G ,只有 1G 。
问题 1 :
为什么 java 应用还可以启动?
问题 2 :
这时候-Xms 的值和-Xmx 的值是如何分配的?
注:
1.Docker 物理机的 内存为8G,Swap 为 0。
2.上面的 java 应用在 Docker 运行一段时间后,就会发生 oom ,被系统 kill 掉了。