2009-12-02 1 views
2

У меня возникла проблема с gflags при попытке найти утечки памяти в приложении Windows.Процессная память увеличивается быстрее с помощью gflags + ust

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

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

Компьютер 4x Intel (R) Xeon (R) CPU E5410 @ 2.33GHz.

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

Спасибо!

ответ

3

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

+0

Спасибо, plodoc, то что бы вы предложили сделать, чтобы найти утечки памяти? –

+1

Вы можете попробовать! Команда heap -stat и команды heap -flt windbg. ! heap -stat будет перечислять кучи по обратному порядку размера. Посмотрите на первые с! Heap -stat -h , чтобы получить категорию размера объекта, которая использует наибольшее пространство. Затем! Heap -flt s отобразит все объекты такого размера. Посмотрите на этот объект, чтобы узнать, можете ли вы их идентифицировать. – plodoc

0

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

+0

Я ознакомился с документацией, и он говорит: «Значение по умолчанию - это минимальный размер, 8 МБ, максимальный размер отсутствует». Я думаю, это означает, что размер по умолчанию равен минимальному (8 МБ), не так ли? В любом случае, спасибо за ответ! –