相关疑难解决方法(0)

.NET中的内存泄漏

在.NET中,我们可以通过哪些方式获得内存泄漏?

我知道两个:

  1. 未正确取消注册事件处理程序/代理.
  2. 不在Windows窗体中处理动态子控件:

例:

// 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中的对象没有任何引用,它将在某个时间收集垃圾.所以这不是一种诱发内存泄漏的方法.

在托管环境中,如果你有一个你不知道的任何对象的意外引用,我认为它是一个内存泄漏(因此我的问题中的两个例子).

那么,这种内存泄漏可能发生的各种可能方式是什么?

.net optimization memory-leaks

20
推荐指数
4
解决办法
1万
查看次数

标签 统计

.net ×1

memory-leaks ×1

optimization ×1