Если решать костылями -- сбрасывай в лог каждые 5 минут по крону результат команды "ps -xau | sort -nk5 -r", с фиксацией времени, когда команда запущена. Оно тебе в лог будет писать список процессов, отсортированных по полю VSZ (virtual size) в обратном порядке (самые большие -- в начале списка). Вот и ищи, кто там шалит.
NB: Синтаксис команды приведён для FreeBSD, на линуксе ключи могут отличаться.
Для линукса синтаксис тоже подходит, я бы только ещё добавил --no-headers чтобы не было где-то в середине (между занимающими сколько-то памяти и нулевого размера процессами) заголовков столбцов :)