public class Tank {
static int counter = 0;
int i = counter ++;
boolean full = false;
public Tank(){
System.out.println("Tank"+i+" created");
full = true;
}
public void empty(){
full = false;
}
protected void finalize(){
if(full){
System.out.println("Tank"+i+" must be empty at cleanup");
}
else {
System.out.println("Tank"+i+" cleanedup OK");
}
}
public String toString(){
return "Tank"+i;
}
public static void main(String[] args){
new Tank().empty();
new Tank();
System.gc();
}}
static int counter = 0;
int i = counter ++;
boolean full = false;
public Tank(){
System.out.println("Tank"+i+" created");
full = true;
}
public void empty(){
full = false;
}
protected void finalize(){
if(full){
System.out.println("Tank"+i+" must be empty at cleanup");
}
else {
System.out.println("Tank"+i+" cleanedup OK");
}
}
public String toString(){
return "Tank"+i;
}
public static void main(String[] args){
new Tank().empty();
new Tank();
System.gc();
}}
第二次 new Tank();后,full=ture,为什么最后输出还有Tank0 cleanedup OK运行后结果Tank0 created
Tank1 created
Tank1 must be empty at cleanup
Tank0 cleanedup OK
true的那个输出Tank1 must be empty at cleanup
false的那个输出Tank0 cleanedup OK
你说的我知道,System.gc(); 怎么执行的?
他是逆向全部执行吗?