Сообщается ли стек потока как память, используемая в диспетчере задач?

Мои коллеги и я пытаемся отследить проблему с памятью в приложении, и в своем исследовании я обнаружил запись в блоге, в которой рассказывается о том, как каждый поток по умолчанию получает стек размером 1 МБ. Наше приложение создает много потоков, поэтому мы написали быструю тестовую программу, чтобы убедиться, что точно поняли, что происходит. Тестовое приложение (C#) просто запускает и создает 300 потоков, но диспетчер задач по-прежнему показывает только 22 МБ памяти. Память стека не учитывается диспетчером задач или происходит что-то еще?


person Michael Bray    schedule 05.08.2009    source источник


Ответы (1)


Диспетчер задач — не лучший инструмент для определения потребления памяти. Вместо этого загрузите бесплатную пробную версию такого инструмента, как MemProfiler или Профилировщик памяти RedGate

Не используйте столбец использования памяти в диспетчере задач для диагностики или профилирования. Используйте счетчики Perfmon, особенно счетчики Private Bytes и специальные счетчики .NET, которые выявляют такие проблемы, как утечка памяти.

Также может быть интересно: Аудит использования памяти для приложений .NET

person Mitch Wheat    schedule 05.08.2009
comment
Да, я понимаю это - это одна из самых преувеличенных вещей о памяти .NET. Однако это вообще не отвечает на мой вопрос. Вопрос прост: память стека сообщается как память, используемая диспетчером задач? - person Michael Bray; 05.08.2009
comment
Диспетчер задач - это приложение рекламной команды Microsoft, доказывающее, что Windows не медленная, вы, должно быть, воображаете;) - person Aaron Digulla; 05.08.2009
comment
@Майкл Брэй: твой вопрос спорный. Используйте лучший инструмент для поставленной задачи. - person Mitch Wheat; 05.08.2009
comment
Как насчет приложений, отличных от .NET? - person Chris Burt-Brown; 05.08.2009