一个对象null,gc后依然可以绝境求生

来源:互联网 发布:淘宝窗帘代理加盟 编辑:程序博客网 时间:2024/04/27 03:24
package com.xiuye.unkonwn;public class FinalizeEscapeGC {public static FinalizeEscapeGC SAVE_HOOK = null;public void isAlive(){System.out.println("yes,I am still alive :");}@Overrideprotected void finalize() throws Throwable {super.finalize();System.out.println("finalize method executed!");FinalizeEscapeGC.SAVE_HOOK = this;}public static void main(String[] args) {SAVE_HOOK = new FinalizeEscapeGC();//first save itself successfullySAVE_HOOK = null;System.gc();//because of Finalizer's priority is lower,sleep 0.5s to wait it.try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}if(SAVE_HOOK != null){SAVE_HOOK.isAlive();}else{System.out.println("no,I am dead...");}//second save itselfSAVE_HOOK = null;System.gc();//because of Finalizer's priority is lower,sleep 0.5s to wait it.try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}if(SAVE_HOOK != null){SAVE_HOOK.isAlive();}else{System.out.println("no,I am dead...");}}}

结果:

finalize method executed!
yes,I am still alive :
no,I am dead...


0 0
原创粉丝点击