Память процесса увеличивается намного быстрее с gflags +ust

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

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

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

Компьютер оснащен 4-кратным процессором Intel(R) Xeon(R) E5410 с частотой 2,33 ГГц.

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

Спасибо!

2 ответа

Решение

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

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

Другие вопросы по тегам