Лучшие методы в .NET: выявление утечек памяти приложения

ОГЛАВЛЕНИЕ

В данной статье рассматривается выявление утечек памяти в приложении .NET.

Загрузить исходный код - WindowsAppMemoryLeak - 34.04 KB

Введение

Утечки памяти в приложении .NET всегда были кошмаром программистов. Утечки памяти – самые большие проблемы, когда дело касается рабочих серверов. Рабочие сервера, как правило, должны работать с минимальным временем простоя. Утечки памяти потихоньку возрастают и спустя некоторое время останавливают сервер, потребляя огромные куски памяти. Максимальный период времени люди перезагружают систему, заставляют ее работать временно и отправляют клиентам сообщение с извинениями за простой.

Не используйте диспетчер задач для выявления утечек памяти

Первая и наиболее важная задача – подтвердить наличие утечки памяти. Многие разработчики используют диспетчер задач windows для подтверждения наличия утечки памяти в приложении. Использование диспетчера задач не только вводит в заблуждение, но и не дает достаточной информации о том, где находится утечка памяти.

Сначала попытаемся понять, почему информация диспетчера задач о памяти вводит в заблуждение. Диспетчер задач показывает рабочий набор памяти, а не фактическую используемую память. Но что это означает? Эта память - выделенная память, а не используемая память. Добавление некоторого количества дополнительной памяти из рабочего набора может совместно использоваться другими процессами / приложением.

Рабочий набор памяти может быть больше по количеству, чем фактическая используемая память.