转自:https://blog.csdn.net/a/article/details/
finalize()是Object中的方法,当垃圾回收器将要回收对象所占内存之前被调用,即当一个对象被虚拟机宣告死亡时会先调用它finalize()方法,让此对象处理它生前的最后事情(这个对象可以趁这个时机挣脱死亡的命运)。要明白这个问题,先看一下虚拟机是如何判断一个对象该死的。
判定死亡
“GC ROOTS”定义:GC管理的主要区域是Java堆,一般情况下只针对堆进行垃圾回收。方法区、栈和本地方法区不被GC所管理,因而选择这些区域内的对象作为GC roots,被GC roots引用的对象不被GC回收。
“GC ROOTS”也可以看做是引用链的最顶级。
最后的救赎
需要注意:
finalize()的作用
综上:finalize()方法并没有什么鸟用。
至于为什么会存在这样一个鸡肋的方法:书中说“它不是C/C++中的析构函数,而是Java刚诞生时为了使C/C++程序员更容易接受它所做出的一个妥协”。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207317.html原文链接:https://javaforall.net
