散分200讨论JAVA的GC机制!!!!!!!!!!!!!!!!!!!!!!!!高手请进
hfree 2004-12-31 01:56:29 import java.util.* ;
class A {
protected void finalize(){
System.out.println("A is killed");
}
}
public class B1 {
public static void main(String[] args ) {
Vector v = new Vector() ;
for(int i=0;i<100;i++) {
A a = new A() ;
v.add(a) ;
// a = null ;
}
v = null ;
System.gc() ;
}
}
public class B2 {
public static void main(String[] args ) {
Vector v = new Vector() ;
if(true) {
A a = new A() ;
v.add(a) ;
// a = null ; 这一句第二次调试的时候请不要注掉.
}
v = null ;
System.gc() ;
}
}
这两个类,B1和B2,大家说会输出什么结果? 一试便知.但是为什么会有这样的结果呢?
我试到的是
B1,有输出A is killed
B2,无输出
B2,加上a = null,则有输出A is killed
在B2中,如果不加上a = null的话,是不是a一直都不会被finalize ?
大家讨论讨论吧,顺便也说一下GC的机制!