Посмотрите на / proc / vmstat, там много информации о системной памяти.
Карты / proc // предоставят вам много информации о вашей структуре памяти процесса.
Обратите внимание, что если вы проверите память перед запуском длинной работы, другой процесс может съесть всю доступную память, и ваша программа в любом случае может вылететь!
Я ничего не знаю о ваших кэшированных классах, но если эти объекты довольно малы, вы, вероятно, переопределили операторы new / delete. По этому довольно легко отслеживать потребление памяти (по крайней мере, подсчитывая объекты)
Почему бы не изменить политику кэширования? И очистите старый неиспользуемый объект.
Еще один уродливый способ - попытаться выделить несколько порций памяти и посмотреть, как программа может выделить их и после этого освободить. На 32 битах это может дать сбой, потому что куча может быть фрагментирована, но если она работает, вы уверены, что у вас достаточно памяти в это время.