Сообщается ли о стоке потока как о памяти, используемой в диспетчере задач?
Мои коллеги и я пытаемся отследить проблему с памятью в приложении, и в своем исследовании я нашел запись в блоге, в которой рассказывается о том, как каждый поток получает стек по 1 МБ по умолчанию. В нашем приложении создается много потоков, поэтому мы написали программу быстрого тестирования, чтобы точно понять, что происходит. Тестовое приложение (C#) просто создает и создает 300 потоков, но диспетчер задач по-прежнему показывает только 22 МБ памяти. Диспетчер задач не учитывает память стека или что-то еще происходит?
1 ответ
Диспетчер задач - не лучший инструмент для определения потребления памяти. Вместо этого загрузите бесплатную пробную версию такого инструмента, как MemProfiler или RedGate Memory Profiler.
Не используйте столбец mem в диспетчере задач для диагностики или профилирования. Используйте счетчики Perfmon, особенно Private Bytes и специальные.NET-счетчики, которые выявят такие проблемы, как утечки памяти.
Может также представлять интерес: Аудит использования памяти для приложений.NET