私は C# を使用しており、いくつかの方法では、データベースの結果にいくつかのリストを使用しています。これらは非常に大きくなる可能性があります (それぞれ約 1,000 個のオブジェクトの 10 個のリスト)。とりあえず、これらのメソッドから戻り、ガベージ コレクターにそれをクリアさせます。戻る直前に私が書いたらTheList.Clear();
、これは何かメリットがありますか?
ありがとう。
私は C# を使用しており、いくつかの方法では、データベースの結果にいくつかのリストを使用しています。これらは非常に大きくなる可能性があります (それぞれ約 1,000 個のオブジェクトの 10 個のリスト)。とりあえず、これらのメソッドから戻り、ガベージ コレクターにそれをクリアさせます。戻る直前に私が書いたらTheList.Clear();
、これは何かメリットがありますか?
ありがとう。
リストを呼び出しClear
てもデータのガベージ コレクションは発生せず、リストからオブジェクトへの参照が削除されるだけなので、メリットはありません。
いいえ、メソッドを呼び出した人に向けてリストをコピーしていないため、メモリ内の 1 つの場所にのみ存在するそのリストへの参照を送信しています。リストをクリアすると、メソッドから送信したリストも同じなのでクリアされます。
私があなたに箱を渡せば、あなたはそれを物で満たしてくれますが、あなたが私に箱を返した後、あなたはそれを空にします、それは空になります。
いいえ、ガベージ コレクターは、これを実行したかどうかに関係なく、リストまたはその内容への参照がないことを検出し、ガベージ コレクターが実行されるまでメモリが再利用されないためです。