现代os对于内存这个概念是很模糊的。不如说现代os压根没有内存这个概念,你所谓的内存,其形式更像是缓存。
现代os,malloc基本就只是一个声明。哪怕你只剩下几M内存了,你依然可以malloc 10tb内存,malloc基本上是永远成功的,不会返回oom的错误。只有真正使用内存的时候才发生分配。且有各种share的情况,以及被swap出去(哪怕内存充足,使用率低一样会被swap出去),甚至压缩掉等等的情况。
所以现代os,要计算某个程序到底用了多少物理内存,其实很难算清的,是一笔糊涂账。
所以他说的其实也没错,你所谓的死机,更多的是内存太低之后导致运行效率很低,运行的非常慢,表现的像是卡死。实际上并不是真的死机,真用的太厉害也会触发oom kill,并不会死掉。
一般来说你如果是ssd的话,划块出来swapon就能解决问题。我之前有个计算应用需要用到100多GB的内存,我在32G的机器上开个swap给它补了100G,跑的还挺顺畅的。
【 在 echiz 的大作中提到: 】
: 不是杠,我就是手头这个机器不能扩内存,没事就死掉才换的机器
: 你认为是杠,只能说你的应用场景真没啥用到内存的地方
:
--
修改:lvsoft FROM 124.79.171.*
FROM 124.79.171.*