类的实例会A
被垃圾收集还是会永远留在内存中?
我知道,如果一个对象符合垃圾回收的条件并且它的finalize()
方法已被调用,并且在此方法中该对象可以被实时执行线程访问,则它不是垃圾回收。
public class A{
String someString = null;
private A a=null;
public String getSomeString() {
return someString;
}
public void setSomeString(String someString) {
this.someString = someString;
}
@Override
protected void finalize() throws Throwable {
try {
this.a=this;
System.out.println("final called");
} finally {
super.finalize();
}
}
}
public static void main(String args[]) throws Exception {
A s1=new A();
s1=null;
System.gc();
System.out.println("gc called");
......
}
灵感来自我们可以关闭终结器吗?