有一个问题
for(int i=1;i<=10;i++){
Lei l=new Lei()//创建一个对象;
}
这样循环10次后,是不是到最后有10个对象一直存在于内存中? --------------------编程问答-------------------- 如果下次回收发生在过程内,有1个,如果下次回收发生在过程结束后,有10个 --------------------编程问答-------------------- GC的机制问题 同学习 希望高手解答! --------------------编程问答-------------------- --------------------编程问答-------------------- 不会一直在内存中,这些对象由于没有根引用,会成为垃圾,最终被gc回收 --------------------编程问答-------------------- 当然不会,九个没有引用,垃圾,一个出了作用域就没用了,垃圾 --------------------编程问答--------------------
几秒钟之内,这些垃圾就被自动回收了。 --------------------编程问答-------------------- 如果你想自己编程来看看有没有被gc回收这些对象,可以创建一个WeakReference对象,把你关注的对象放入这个“弱引用”对象中。然后就可以轮询这个WeakReference对象中的数据,看看关注的对象是否真的还存在。 --------------------编程问答-------------------- 我认为是只有一个 --------------------编程问答-------------------- 一定会被GC(垃圾回收),因为他们都是“根”,而且不存在引用
GC会判定并回收他们
至于何时回收就无法确定,因为代(Generation)机制 --------------------编程问答-------------------- 我在winform中有一个按钮控件,设定按钮事件为创建另一个窗口并显示(即点击form1的某按钮一下,就会出现另一个窗口)
按钮点10下,出现10个窗口(创建了10个新窗口实例),这10个窗口一直都存在,并不会随着时间而被XX回收
所以我在1楼的目的就是模拟这个问题
--------------------编程问答-------------------- --------------------编程问答--------------------
补充:.NET技术 , C#