在我的环境中,我将禁用内存过量使用(vm.overcommit = 2)。这也禁用了Linux OOMKiller。Docker:运行容器的内存限制已启用且内存过载禁用的负面影响是什么?
原因是我在Docker容器中运行Java应用程序时,内存大小受到了限制,我希望看到它们与OOMError(并写入堆转储)失败,而不是仅仅由Linux OOMKiller静静地杀死。
Iam不确定可能产生的负面影响。我不是Linux内核,docker内存管理或Java VM专家,所以决定在这里问一下。
如果有人有这样的经历,你能告诉我吗?
谢谢,斯蒂芬。我计划将-Xmx设置为-Xmx,并使用-XX:+ HeapDumpOnOutOfMemoryError JVM选项使Java应用程序自动生成堆转储。但是我不确定在禁用内存过量使用时,Java应用程序是否会因OOM而失败。如果它以不同的错误类型失败,它将不会自动生成堆转储,这对我来说是不受欢迎的行为。 – daniilyar
我建议你尝试一些简单的实验。 –