Как понять что в C# приложении есть утечка памяти? .NET

  • 18 Просмотры
  • Последний пост 4 недель назад
  • Найдено решение по теме
Dmitrij Gvozdev разместил пост 4 недель назад

Очень сложно мне обнаружить утечку памяти, вплоть до того момента когда уже не появляется ошибка OutOfMemoryException, но тут уже и индюку понятно что памяти не хватает... 

Как можно заранее узнать что не хватает памяти или что она куда-то утекает?

  • Пост понравился
  • Рома Никитин
Отсортировать по: Стандартный | Последний | Голоса
Антон Михайличук разместил пост 4 недель назад

Ну, во первых, OutOfMemoryException возникает когда памяти уже не хватает и уже "поздно пить боржоми")

шучу. 

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

Также постепенное увеличение объёма используемой памяти, которое видно в диспетчере задач - это также признак утечки памяти.

Если появляются подозрения, что в приложении есть утечка памяти, то нужно прежде всего определить тип памяти, в котором эта утечка имеет место. Это позволит определить область памяти, на которой нужно сосредоточить внимание и усилия при отладке.

Антон Михайличук разместил пост 4 недель назад

http://www.codenet.ru/progr/cpp/memleaks.php - вот здесь можно почитать про утечку памяти.

"При разработке больших приложений, оперирующих большими объемами информации на первое место при отладке встает проблема обнаружения неправильного распределения памяти. Суть проблемы состоит в том, что если мы выделили участок памяти, а затем освободили не весь выделенный объем, то образуются блоки памяти, которые помечены как занятые, но на самом деле они не используются. При длительной работе программы такие блоки могут накапливаться, приводя к значительному расходу памяти.

Как обнаружить утечку памяти..."

Игорь Демидов разместил пост 4 недель назад

Потенциальные утечки можно обранужить если запускать приложение с профайлером.

Например в Visual Studio есть меню Debug -> Performance Profiler и там можно выбрать Memory Usage, после чего запустится приложение, выполнив действия которые могу привести к утечке памяти делайте Snapshot и изучайте что где и в каких объемах создается и не освобождается.

  • Пост понравился
  • Рома Никитин
  • Dmitrij Gvozdev
Dmitrij Gvozdev разместил пост 4 недель назад

Спасибо!

Close