Я думаю, что инструмент профилирования памяти, такой как IBM / Rational Purify или valgrind , может быть тем, что вам нужно.
Кроме того, если ваша программа использует 600 МБ при запуске, вы должны сначала проверить, что ваши зависимые библиотеки делают после загрузки. Возможно, вы еще даже не ввели main()
, но они могут создавать тяжеловесные глобальные статические объекты, которые инициализируются еще до того, как что-то начнется.
Еще одна вещь, которую нужно иметь в виду, заключается в том, что каждому потоку будет выделено много памяти для его стека. Это может быть мегабайт или больше на поток, так что если вы сами создаете 600 потоков, то уже 600 МБ уже ушло.