有关java内存的问题
有如下代码:
public void foo() {
List list = new ArrayList();
Obj o1 = new Obj();
Obj o2 = new Obj();
list.add(o1);
list.add(o2);
o1 = null;
o2 = null;
Obj o3 = list.get(0);
list = null;
}
请问该段代码中的o2最终会被垃圾回收器回收吗?
[解决办法]
会,应该在该对象的生命结束的时候
[解决办法]
答案是肯定.
当执行o2 = null;时,o2就没有任何对象跟它关联了,此时,o2也就是垃圾回收器的回收对象,但此时不一定别回收,因为不确定GC是否在工作,假如正在工作,马上会被回收掉;假如GC还没有运行,o2就会一直存在,直到GC运行.
[解决办法]
ls正解,GC的优先级是比较低的
[解决办法]
回复人:ieo2004(ieo) ( 一级(初级)) 信誉:97 2007-3-22 11:16:24 得分:0
?
java里面有什么方法可以在foo方法结束前手动释放掉o3所引用对象占用的内存?
Top
--------------------------
无能为力,不敢保证。