Первые места для меня будут:
Делает ли приложение много памяти для предварительного распределения, чтобы использовать ее позже? Часто ли эта память остается неиспользованной, никогда не раздаваемой? Подумайте о переходе на новое / удаление (или лучше используйте smart_ptr) по мере необходимости.
Использует ли код статический массив, такой как
Object arrayOfObjs[MAX_THAT_WILL_EVER_BE_USED];
а раздавать объекты в этом массиве? Если так, рассмотрите ручное управление этой памятью.