本帖最后由 xuemeng 于 2013-5-14 19:15 编辑
我给来段简单的代码吧, 这代码也能说明问题, 比你的代码简单多了!!!
class Demo {
public static void main(String[] args) throws Exception {
// 当for循环次数太多, 也就是说产生的垃圾太多, 把下面的调用垃圾回收器的代码注释掉, 也可以看到垃圾回收器会执行
// 这就说明垃圾回收器即使不掉用, 在垃圾漫天飞的时候会出来工作.
for (int i = 0; i < 100000; i++) {
// 产生垃圾
new A(i);
}
// 调用垃圾回收器
// System.gc();
// 这里调用sleep方法的目的, 这里的目的是让主线程不要马上结束, 步然垃圾回收器线程没有执行时, 程序就结束了;
// Thread.sleep(100);
}
}
class A {
private int i;
public A(int i) {
this.i = i;
}
// 这里复写了Object的finalize方法,目的是让看到垃圾回收器有没有工作
public void finalize() {
System.out.println(i);
}
} |