1

私は C# を使用しており、いくつかの方法では、データベースの結果にいくつかのリストを使用しています。これらは非常に大きくなる可能性があります (それぞれ約 1,000 個のオブジェクトの 10 個のリスト)。とりあえず、これらのメソッドから戻り、ガベージ コレクターにそれをクリアさせます。戻る直前に私が書いたらTheList.Clear();、これは何かメリットがありますか?

ありがとう。

4

3 に答える 3

5

リストを呼び出しClearてもデータのガベージ コレクションは発生せず、リストからオブジェクトへの参照が削除されるだけなので、メリットはありません。

于 2012-11-04T19:44:20.813 に答える
2

いいえ、メソッドを呼び出した人に向けてリストをコピーしていないため、メモリ内の 1 つの場所にのみ存在するそのリストへの参照を送信しています。リストをクリアすると、メソッドから送信したリストも同じなのでクリアされます。

私があなたに箱を渡せば、あなたはそれを物で満たしてくれますが、あなたが私に箱を返した後、あなたはそれを空にします、それは空になります。

于 2012-11-04T19:43:44.730 に答える
1

いいえ、ガベージ コレクターは、これを実行したかどうかに関係なく、リストまたはその内容への参照がないことを検出し、ガベージ コレクターが実行されるまでメモリが再利用されないためです。

于 2012-11-04T19:48:52.540 に答える