1

オブジェクトのリストを作成し、それを返して ViewBag に格納する関数があります。

コードは次のようになります。

List<XDocument> xDocs = readXmlFiles(path);// a "new List<XDocument>()" is called
ViewBag.data = xDocs;
return View();

私の質問は、このようなコードがある場合、ガベージ コレクターは xDocs に割り当てられたリソースを解放するかどうかです。または、少なくとも同じビューの新しいリクエストが処理されると解放されますか?

4

1 に答える 1

3

私の質問は、このようなコードがある場合、ガベージ コレクターは xDocs に割り当てられたリソースを解放するかどうかです。

はい、解放します。はViewBag、リクエストの実行が完了するとすぐにガベージ コレクションの対象になります。

または、少なくとも同じビューの新しいリクエストが処理されると解放されますか?

ガベージ コレクションが発生する正確なタイミングは制御できません。CLR は、それを実行するのに最適な瞬間を選択します。これは、次のリクエストの前または後に発生する可能性があります。リクエストごとに新しいコレクションを作成しているため、このコレクションへの参照がなくなると (つまり、リクエストの実行が終了すると)、このコレクションはガベージ コレクションの対象になります。

于 2013-05-27T13:14:54.427 に答える