Каковы все возможные способы, с помощью которых мы можем получить утечки памяти в .NET?Утечки памяти в .NET
Я знаю двух:
- Не правильно отмены регистрации Event Handlers/Delegates.
- Не утилизации динамических дочерних элементов управления в 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();
Update: Идея заключается в том, чтобы перечислить распространенные ошибки, которые не слишком очевидны (например, выше). Обычно понятие состоит в том, что утечки памяти не являются большой проблемой из-за сборщика мусора. Не похоже, чтобы это было на C++.
Большие дискуссии ребята, но позвольте мне прояснить ... по определению, если не осталось на объект ссылки в .NET, будет сбор мусора на некоторое время. Таким образом, это не способ вызвать утечку памяти.
В управляемой среде я бы посчитал это утечкой памяти, если у вас была непреднамеренная ссылка на любой объект, о котором вы не знаете (отсюда два примера в моем вопросе).
Итак, каковы различные возможные способы утечки памяти?
Как сказал Кейт, ваш образец не вызывает утечки памяти. – tobsen 2010-03-24 16:32:23