Tất cả những cách có thể có mà chúng ta có thể bị rò rỉ bộ nhớ trong .NET là gì?Rò rỉ bộ nhớ trong .NET
tôi biết hai:
- Không đúng un-đăng ký Event Handlers/Delegates.
- Không xử lý điều khiển con năng động trong Windows Forms:
Ví dụ:
// 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();
Cập nhật: Ý tưởng là để liệt kê cạm bẫy phổ biến mà không phải là quá rõ ràng (như trên). Thông thường khái niệm là rò rỉ bộ nhớ không phải là một vấn đề lớn vì bộ thu gom rác. Không giống như nó được sử dụng trong C + +.
Những người thảo luận tuyệt vời, nhưng hãy để tôi làm rõ ... theo định nghĩa, nếu không có tham chiếu đến đối tượng trong .NET, nó sẽ được Thu thập rác tại một thời điểm. Vì vậy, đó không phải là một cách để gây ra rò rỉ bộ nhớ.
Trong môi trường được quản lý, tôi sẽ coi đó là rò rỉ bộ nhớ nếu bạn có tham chiếu không mong muốn đối với bất kỳ đối tượng nào mà bạn không biết (do đó có hai ví dụ trong câu hỏi của tôi).
Vì vậy, các cách có thể khác nhau trong đó rò rỉ bộ nhớ có thể xảy ra là gì?
Như Keith đã nói, mẫu của bạn không gây rò rỉ bộ nhớ. – tobsen