.NETでメモリリークが発生する可能性があります。.NETでメモリリークが発生する
私は2つを知っている:
- 適切に解除登録しないEvent Handlers/Delegates。
- は、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();
更新:アイデアは(上記のような)あまりにも明白ではない一般的な落とし穴をリストすることです。通常、ガベージコレクタのためメモリリークは大きな問題ではないという考えがあります。以前はC++であったのとは異なります。
グレートディスカッションみんなが、.NETでオブジェクトに残された参照が存在しない場合、それはいくつかの時点でガベージコレクトになり、定義によって...私は明確にしましょう。だから、メモリリークを引き起こす方法ではありません。
管理された環境では、私が気づいていないオブジェクトへの意図しない参照があった場合、それはメモリリークとみなされます(私の質問の2つの例)。
このようなメモリリークが発生する可能性のあるさまざまな方法は何ですか?
キース氏によると、サンプルではメモリリークは発生しません。 – tobsen