最近,我的Linux机器上的tomcat进程突然被杀死了。调查后,我在/ var / log / messages文件中找到了以下错误消息:
kernel: [1799319.246494] Out of memory: Kill process 28536 (java) score 673 or sacrifice childSep kernel: [1799319.246506] Killed process 28536 (java) total-vm:1271568kB, anon-rss:426528kB, file-rss:0kB
现在,有人可以告诉我total-vm
中包含的所有内容以及anon-rss
与rss
的区别是什么?
答案 0 :(得分:64)
据我所知,进程使用的虚拟内存大小列为“total-vm”。部分内容实际上映射到RAM本身(已分配和使用)。这是“RSS”。
部分RSS分配在实际内存块中(除了映射到文件或设备之外)。这是匿名内存(“anon-rss”),还有映射到设备和文件(“file-rss”)的RSS内存块。
所以,如果你在vim中打开一个巨大的文件,文件-rss会很高,另一方面,如果你的malloc()有很多内存而且确实使用它,你的anon-rss也会很高。
另一方面,如果你分配了大量空间(使用malloc()),但是nevers使用它,则total-vm会更高,但是不会使用真正的内存(由于内存过量使用),所以,rss值会很低。