页面加载后对象是不是有资格进行垃圾收集?
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