在.NET中,我们可以通过哪些方式获得内存泄漏?
我知道两个:
例:
// 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();
Run Code Online (Sandbox Code Playgroud)
更新:想法是列出不太明显的常见陷阱(如上所述).通常的想法是,由于垃圾收集器,内存泄漏不是一个大问题.不像以前那样在C++中.
很棒的讨论人员,但让我澄清......根据定义,如果.NET中的对象没有任何引用,它将在某个时间收集垃圾.所以这不是一种诱发内存泄漏的方法.
在托管环境中,如果你有一个你不知道的任何对象的意外引用,我认为它是一个内存泄漏(因此我的问题中的两个例子).
那么,这种内存泄漏可能发生的各种可能方式是什么?