Есть ли способ узнать, сколько mem используется потоком? - PullRequest
1 голос
/ 07 апреля 2011

Я поддерживаю программу, и она использует 600 + MB mem при запуске, ничего не делая!

Я хочу знать, сколько mem используется каждым потоком, может ли GDB выполнять эту работу?

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

valgrind --tool=massif - правильное решение. Он даст вам всю информацию о том, какой поток использует сколько памяти в какой момент времени.

2 голосов
/ 07 апреля 2011

Я думаю, что инструмент профилирования памяти, такой как IBM / Rational Purify или valgrind , может быть тем, что вам нужно.

Кроме того, если ваша программа использует 600 МБ при запуске, вы должны сначала проверить, что ваши зависимые библиотеки делают после загрузки. Возможно, вы еще даже не ввели main(), но они могут создавать тяжеловесные глобальные статические объекты, которые инициализируются еще до того, как что-то начнется.

Еще одна вещь, которую нужно иметь в виду, заключается в том, что каждому потоку будет выделено много памяти для его стека. Это может быть мегабайт или больше на поток, так что если вы сами создаете 600 потоков, то уже 600 МБ уже ушло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...