当前位置:编程学习 > C#/ASP.NET >>

有一个问题

for(int i=1;i<=10;i++)
{
Lei l=new Lei()//创建一个对象;
}
这样循环10次后,是不是到最后有10个对象一直存在于内存中? --------------------编程问答-------------------- 如果下次回收发生在过程内,有1个,如果下次回收发生在过程结束后,有10个 --------------------编程问答-------------------- GC的机制问题 同学习 希望高手解答! --------------------编程问答-------------------- --------------------编程问答-------------------- 不会一直在内存中,这些对象由于没有根引用,会成为垃圾,最终被gc回收 --------------------编程问答-------------------- 当然不会,九个没有引用,垃圾,一个出了作用域就没用了,垃圾 --------------------编程问答--------------------
引用楼主  的回复:
for(int i=1;i<=10;i++)
{
Lei l=new Lei()//创建一个对象;
}
这样循环10次后,是不是到最后有10个对象一直存在于内存中?


几秒钟之内,这些垃圾就被自动回收了。 --------------------编程问答-------------------- 如果你想自己编程来看看有没有被gc回收这些对象,可以创建一个WeakReference对象,把你关注的对象放入这个“弱引用”对象中。然后就可以轮询这个WeakReference对象中的数据,看看关注的对象是否真的还存在。 --------------------编程问答-------------------- 我认为是只有一个 --------------------编程问答-------------------- 一定会被GC(垃圾回收),因为他们都是“根”,而且不存在引用
GC会判定并回收他们
至于何时回收就无法确定,因为代(Generation)机制 --------------------编程问答-------------------- 我在winform中有一个按钮控件,设定按钮事件为创建另一个窗口并显示(即点击form1的某按钮一下,就会出现另一个窗口)

按钮点10下,出现10个窗口(创建了10个新窗口实例),这10个窗口一直都存在,并不会随着时间而被XX回收
所以我在1楼的目的就是模拟这个问题
--------------------编程问答-------------------- --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,