O'ReillyNet опубликовало небольшую статью о поведении ядра Linux в случае исчерпания объема виртуальной памяти и критериях активации OOM-killer'а (Out-Of-Memory killer). Кроме того, рассмотрены механизмы выделения, управления и освобождения памяти в менеджере памяти.
Особое внимание следует обратить на два механизма выделения памяти процессу:
- brk() sets the end of the process's data segment.
- mmap() creates a new VMA and passes it to the allocator.
Первый механизм используется при выделении объемов, меньших чем величина M_MMAP_THRESHOLD=128KB (по умолчанию). Что интересно, именно этот механизм ответственен за "утечку" памяти такого популярного браузера FireFox.
Как можно понять из статьи, возможно программное исправление такого поведения.
>>> Статья