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 回答