VPS:操作系统:Ubuntu 保证内存:10g 突发或动态内存:20g
当专用内存限制超出时,VPS(虚拟专用服务器)究竟何时会终止进程?哪个进程会被终止?进程被筛选出来终止的依据是什么?
为了使我的问题更加精确,我有一些场景。如果您能告诉我我的理解是否正确,那将很有帮助。
我可以看到 privvmpages 设置为 20g 左右,vmguard 设置为 10g。这意味着,我可以确认有 10g 保证,并且有 20g 突发内存可用。
现在让我们考虑一下这种情况:在 10g 专用 RAM 中,8g 被一些进程占用,我将为 java jvm 分配 3g。在这种情况下,从专用 RAM 中分配 2g,从突发 RAM 中分配 1g ???。如果是这样,在内存紧张的情况下,容器会选择杀死哪个进程??根据我的理解,由于从突发 RAM 中分配了 1g,java jvm 进程会被杀死???
从专用 RAM 分配内存的进程总是安全的,永远不会被杀死???占用大量 RAM 的进程总是被杀死???因为当我为 Java 分配内存时,虽然我选择 xms 和 xmx 来设置初始和最大内存,但实际消耗发生在需要内存时。所以如果从专用 RAM 分配内存,jvm 是否不会被杀死???
我如何确保从专用 RAM 中分配内存???
当专用 RAM 中有足够的内存可用时,分配总是从专用 RAM 进行???
如果我的上述理解是错误的并且没有意义,您能解释一下在什么情况下以及在内存紧张的情况下哪些进程会被终止吗?
我提出这个问题的原因是,我可以看到当内存超过 15g 左右时,jvm 总是被杀死。总是 jvm。当我设置初始和最大内存时,分配总是成功的。但是当它真正开始消耗内存时,这个进程总是被杀死……并且不接触其他进程……所以我想让 jvm 进程安全并停止一直被杀死。
如果我改变内存分配顺序,即首先分配 jvm 内存,然后分配其余内存,这样可以吗?还是我必须为进程设置优先级?