Память процесса увеличивается намного быстрее с помощью gflags +ust
-
11-09-2019 - |
Вопрос
Я застрял в проблеме с gflags при попытке найти утечки памяти в приложении Windows.
Когда я включаю просто флаг (чтобы собрать трассировки стека распределения памяти) память моего приложения увеличивается намного быстрее, чем когда флаг выключен (он достигает 800 МБ примерно за 10 минут).что далеко от 50-100 МБ/день, которые я получаю, когда флажок снят).
Я читал, что максимальный размер трассировки стека составляет 32 МБ, поэтому я полагаю, что это не должно быть проблемой.
Компьютер представляет собой 4 процессора Intel(R) Xeon(R) E5410 @ 2,33 ГГц.
Если бы кто-нибудь мог дать мне подсказку, я был бы очень признателен.
Спасибо!
Решение
База данных трассировки стека — не единственное влияние флага ust.Он также добавляет как минимум 32 байта к каждому выделению для хранения идентификатора трассировки стека.Это может объяснить увеличение памяти, если задействовано много небольших выделений.Если вы запустите процесс с подключенным отладчиком или скомпилируете процесс с целью отладки, кучи Windows будут установлены в режим отладки, и накладные расходы на каждое выделение будут еще больше.
Другие советы
Вы можете установить максимальный размер базы данных трассировки, используя /tracedb SizeInMB. См. Документация MSDN Gflags для главы и стиха.По умолчанию максимальный размер не установлен, что, скорее всего, объясняет наблюдаемое вами поведение.