最近、LinuxマシンのTomcatプロセスが突然終了しました。調査後、/ var/log/messagesファイルに次のエラーメッセージが見つかりました。
kernel:[1799319.246494]メモリ不足:プロセス28536(Java)スコア673を強制終了するか、childSepを犠牲にします kernel:[1799319.246506]プロセス28536(Java)を強制終了しましたtotal-vm:1271568kB、anon-rss :426528kB、file-rss:0kB
さて、誰かがtotal-vm
に含まれるものすべてとanon-rss
はrss
とどう違うのか教えてください。
私が理解しているように、プロセスが使用する仮想メモリのサイズは「total-vm」としてリストされています。その一部は、実際にRAM自体(割り当てられて使用されている)。これは「RSS」です。
RSSの一部は、実際のメモリブロックに割り当てられます(ファイルまたはデバイスにマッピングされる場合を除く)。これは匿名メモリ(「anon-rss」)であり、デバイスとファイル(「file-rss」)にマップされるRSSメモリブロックもあります。
したがって、vimで巨大なファイルを開くと、file-rssが高くなります。反対に、大量のメモリをmalloc()して実際に使用すると、anon-rssも高くなります。
反対に、(malloc()を使用して)大量のスペースを割り当てたが、それを使用しない場合、total-vmは高くなりますが、実際のメモリは使用されません(メモリのオーバーコミットのため)。 rss値は低くなります。