Подтвердить что ты не робот

Что означает anon-rss и total-vm

Недавно процесс tomcat на моей машине Linux был убит внезапно. После расследования я нашел ниже сообщение об ошибке в файле /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?

4b9b3361

Ответ 1

Как я понимаю, размер виртуальной памяти, которую использует процесс, указан как "total-vm". Часть его действительно отображается в ОЗУ (выделено и используется). Это "RSS".

Часть RSS выделяется в реальных блоках памяти (кроме отображения в файл или устройство). Это анонимная память ( "anon-rss" ), и есть также блоки памяти RSS, которые отображаются в устройства и файлы ( "файл-rss" ).

Итак, если вы откроете огромный файл в vim, файл-rss будет высоким, с другой стороны, если вы malloc() много памяти и действительно используете его, ваш anon-rss также будет высоким.

С другой стороны, если вы выделяете много места (с помощью malloc()), но nevers его используют, сумма-vm будет выше, но реальная память не будет использоваться (из-за перекомпоновки памяти) поэтому значения rss будут низкими.