Управление памятью в Linux немного сложно понять, и я не могу сказать, что полностью его понимаю, но я постараюсь поделиться небольшим опытом и знаниями.
Краткий ответ на ваш вопрос: Да, в список включены и другие материалы, кроме того, что в списке.
В вашем списке отображаются приложения, запускаемые в пользовательском пространстве. Ядро использует память для себя и модулей, кроме того, оно также имеет нижний предел свободной памяти, который вы не можете использовать. Когда вы достигнете этого уровня, он попытается освободить ресурсы, а когда он больше не сможет этого делать, у вас возникнет проблема с OOM.
Из последней строки вашего списка вы можете прочитать, что ядро сообщает об общем использовании виртуальной памяти: 1498536 КБ (1,5 ГБ), где общая виртуальная память компьютера включает в себя как физическую память, так и пространство подкачки. Вы заявили, что у вас нет свопа, но ядро, похоже, думает иначе, поскольку ваше пространство подкачки, как сообщается, заполнено (Total swap = 524284kB, Free swap = 0kB), и оно сообщает общий размер vmem 1,5 ГБ.
Еще одна вещь, которая может усложнить ситуацию, это фрагментация памяти. Вы можете поразить убийцу OOM, когда ядро попытается выделить, скажем, 4096 КБ непрерывной памяти, но свободных нет.
Теперь одно это, вероятно, не поможет вам решить настоящую проблему. Я не знаю, нормально ли для вашей программы требовать такой объем памяти, но я бы порекомендовал попробовать статический анализатор кода, такой как cppcheck, для проверки на утечки памяти или утечки дескриптора файла. Вы также можете попробовать запустить его через Valgrind, чтобы получить немного больше информации об использовании памяти.