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

StackOverflow https://stackoverflow.com/questions/1831683

Вопрос

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

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

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

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

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

Спасибо!

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top