Каковы все возможные способы устранения утечек памяти в .NET?
Я знаю два:
- Неправильно деинсталлировать Обработчики событий/делегаты.
- Не удалять динамические дочерние элементы управления в Windows Forms:
Пример:
// Causes Leaks
Label label = new Label();
this.Controls.Add(label);
this.Controls.Remove(label);
// Correct Code
Label label = new Label();
this.Controls.Add(label);
this.Controls.Remove(label);
label.Dispose();
Обновить. Идея состоит в том, чтобы перечислить распространенные ошибки, которые не слишком очевидны (например, выше). Обычно понятие состоит в том, что утечки памяти не являются большой проблемой из-за сборщика мусора. Не похоже, чтобы это было на С++.
Отличные парни обсуждения, но позвольте мне уточнить... по определению, если в .NET нет ссылки на объект, это будет сбор мусора в какой-то момент. Таким образом, это не способ вызвать утечку памяти.
В управляемой среде я буду считать утечку памяти, если у вас была непреднамеренная ссылка на любой объект, о котором вы не знаете (отсюда два примера в моем вопросе).
Итак, каковы различные возможные способы утечки памяти?