Собрали для вас обязательные правила, с которыми утечки памяти будут исключены из ваших проектов.
1️⃣ Отписывайтесь от обработчиков событий
Если объект подписался на событие и не отписался, он останется в памяти.
✅ Решение: Используйте -=, чтобы отписаться от события:
eventHandler.SomeEvent -= MyEventHandler;
2️⃣ Освобождайте неуправляемые ресурсы
Подключения к БД, файлы и сокеты могут не освобождаться автоматически.
✅ Решение: Реализуйте
IDisposableclass MyClass : IDisposable {
public void Dispose() {
// Очистка ресурсов
}
}Используйте
using, чтобы автоматически вызвать Dispose():using (var obj = new MyClass()) { /* работа с объектом */ }3️⃣ Следите за статическими ссылками
Статические переменные хранят объекты в памяти на весь срок работы приложения.
✅ Решение: Используйте WeakReference, если объект не должен жить вечно:
WeakReference<MyObject> weakRef = new WeakReference<MyObject>(new MyObject());
4️⃣ Разрывайте циклические ссылки
Если два объекта ссылаются друг на друга, сборщик мусора не сможет их удалить.
✅ Решение: используйте WeakReference или
GC.Collect() .🐸Библиотека шарписта #буст
