页面加载后对象是不是有资格进行垃圾收集?

Posted

技术标签:

【中文标题】页面加载后对象是不是有资格进行垃圾收集?【英文标题】:Are objects eligible for garbage collection after the page loads?页面加载后对象是否有资格进行垃圾收集? 【发布时间】:2014-07-17 14:47:32 【问题描述】:

我想知道引用(特别是在类级别定义的引用)何时超出 .net Web 应用程序的范围,以便更好地了解它们何时有资格进行垃圾收集。

目前我的代码如下所示:

public class SomeClass

  Object object = new Object();

  protected void Page_Load(object sender, EventArgs e)
  
    // some code
  

object会在页面加载后超出范围(并有资格进行垃圾收集)还是在用户离开页面后?

我通常在 php 中创建 Web 应用程序,因此我猜想 object 在页面加载完成后将有资格进行 GC,因为它不知道用户何时离开页面。

【问题讨论】:

只有在没有更多对它的引用时才会对 GC 可用,在本例中是在页面请求完成之后。 谢谢詹姆斯。你知道是否有任何实例可以将 Page 放置在大型对象堆上,从而提升到 Gen 2 GC? 【参考方案1】:

每当发出请求时,ASP 都会创建一个新的 Page 对象,并且一旦将响应发送回用户,它就不会保留对该 Page 对象的引用,只要您没有找到通过某种方式自己保持对 Page 对象的实时引用,一旦发送响应,Page 和只能通过该页面访问的所有对象都可以进行垃圾回收。

【讨论】:

我就是这么想的。我被卷入了这个由许多承包商创建的项目,所以如果他们找到一种方法来保持对页面的引用,我不会感到惊讶,这样我就可以再看一件事了。谢谢!我会等几个小时才能接受这个答案,以便其他人加入。

以上是关于页面加载后对象是不是有资格进行垃圾收集?的主要内容,如果未能解决你的问题,请参考以下文章

对象何时有资格进行垃圾收集?

如果渲染器进程关闭,则会收集电子全局变量垃圾?

36.JVM内存分哪几个区,每个区的作用是什么如和判断一个对象是否存活java垃圾回收机制垃圾收集的方法有哪些java类加载过程类加载机制双亲委派Minor GC和Major GC

何时以及如何将 java 类加载器标记为垃圾收集?

为啥指定的对象有资格进行垃圾回收?

标记为垃圾收集vs符合java中的垃圾收集条件