79

最近,我的Linux机器上的tomcat进程突然被杀死。经过调查,我在 /var/log/messages 文件中发现以下错误消息:

内核:[1799319.246494]内存不足:杀死进程28536(java)得分673或牺牲childSep
内核:[1799319.246506] 杀死进程 28536 (java) total-vm:1271568kB, anon-rss:426528kB, file-rss:0kB

现在,有人可以告诉我所有内容都包含在什么内容中,total-vm与 有什么anon-rss不同rss

4

1 回答 1

131

据我了解,进程使用的虚拟内存大小被列为“total-vm”。它的一部分实际上映射到 RAM 本身(分配和使用)。这是“RSS”。

RSS 的一部分分配在实际内存块中(而不是映射到文件或设备中)。这是匿名内存(“anon-rss”),还有映射到设备和文件的 RSS 内存块(“file-rss”)。

所以,如果你在 vim 中打开一个大文件,file-rss 会很高,另一方面,如果你 malloc() 大量内存并真正使用它,你的 anon-rss 也会很高。

另一方面,如果您分配了很多空间(使用 malloc()),但从不使用它,总虚拟机会更高,但不会使用实际内存(由于内存过度使用),所以, RSS 值会很低。

于 2014-03-11T13:12:04.343 回答