package com.taobao.jvm.unit3;
/**
* 服用天香续命露的演示(finalize至多只会调用一次。)
*
*/
public class FinalizeEscapeGC {
private static FinalizeEscapeGC SAVE_HOOK = null;
private void isAlive(){
System.out.println("报告首长,我还活着!!!(服用天香续命露)");
}
@Override
protected void finalize() throws Throwable {
super.finalize();
System.out.println("finalize方法要被调用了!...这下糟了,我快死了!");
SAVE_HOOK = this; //服用天香续命露-1 总量:1 剩余:0
}
public static void main(String[] args) throws InterruptedException {
SAVE_HOOK = new FinalizeEscapeGC();
// ready to die
SAVE_HOOK = null;
System.gc();
Thread.sleep(723);
if(SAVE_HOOK != null){
SAVE_HOOK.isAlive();
}else{
System.out.println("xxx同志不幸战死。");
}
System.out.println("------------------------------");
// ready to die
SAVE_HOOK = null;
System.gc(); // 尼玛啊,天香续命露没了,我擦!我死定了!
Thread.sleep(723);
if(SAVE_HOOK != null){
SAVE_HOOK.isAlive();
}else{
System.out.println("xxx同志不幸战死。");
}
}
}