Память процесса увеличивается намного быстрее с gflags + ust - PullRequest
3 голосов
/ 02 декабря 2009

Я застрял в проблеме с gflags при попытке обнаружить утечки памяти в приложении для Windows.

Когда я включаю флаг ust (для сбора следов стека выделений памяти), память моего приложения увеличивается намного быстрее, чем когда флаг выключен (он достигает 800 МБ за 10 минут примерно, 50-100 МБ / день, который я получаю, когда флаг выключен).

Я читал, что для трассировки стека существует максимум 32 МБ, поэтому я полагаю, что это не должно быть проблемой.

Компьютер представляет собой 4x процессор Intel (R) Xeon (R) E5410 @ 2,33 ГГц .

Если бы кто-то мог дать мне подсказку, я был бы очень благодарен.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 25 февраля 2010

База данных трассировки стека - не единственное влияние флага ust. Он также добавляет не менее 32 байтов к каждому выделению для хранения своего идентификатора трассировки стека. Это может объяснить увеличение вашей памяти, если задействовано много небольших выделений. Если вы запустите процесс с подключенным отладчиком или скомпилируете процесс с целью отладки, куча окон будет переведена в режим отладки, и издержки на выделение будут еще больше.

1 голос
/ 04 декабря 2009

Вы можете установить максимальный размер базы данных трассировки, используя / tracedb SizeInMB. См. Документацию MSDN Gflags для главы и стиха. По умолчанию максимальный размер отсутствует, что, скорее всего, объясняет поведение, которое вы видели.

...