【Java学习笔记】finalize方法

finalize 方法

说明:实际开发中很少或者几乎不会重写finalize方法,更多的是应对面试考点

说明

(1)当对象被回收时,系统会自动调用该对象的 finalize 方法。子类可以重写该方法,做一些额外的资源释放操作(必然:释放资源,数据库连接,或者打开文件...)

(2)什么时被回收:当一个对象没有任何引用时,则 JVM 认为该对象不再是一个可达对象。该对象将被垃圾回收器回收,在回收对象时,会调用 finalize 方法。

(3)对象回收机制的调用,是在系统决定对象已没有引用后自动完成的。通过调用 System.gc() 主动触发垃圾回收机制。

补充说明:如果当对象没有被引用时就判断,然后回收,效率太低,系统底层由特定的方法判断是否回收,所以需要手动触发回收机制

finalize方法重写示例

java 复制代码
public class finalize {
    public static void main(String[] args) {
        finals finals = new finals(18);
        finals = null;
        System.gc();
    }
}
class finals{
    int age;

    public finals(){

    }

    public finals(int age) {
        this.age = age;
    }

    @Override
    protected void finalize() throws Throwable {
        System.out.println("调用finalize回收对象");
    }
}

// 输出
调用finalize回收对象

代码说明

使用alt + insert重写finalize方法,使用System.gc()主动触发垃圾回收机制,进而验证对象没有被引用时,默认调用fianlize方法实现垃圾回收机制

相关推荐
hss123456788 分钟前
天津婚房装修怎么选:从整装、定制到全案落地的技术决策框架
笔记
职豚求职小程序刷题22 分钟前
中国平安社招IQ测评+16PF怎么准备?
笔记
估值探索者26 分钟前
【Python量化组合管理实战 02】钱该怎么分?等权、波动率倒数与动态评分三种配权实测
java·开发语言·python·接口·股票数据api接口
春和景明36026 分钟前
27号笔记
笔记
志尊宝29 分钟前
AI原生前端开发(028):AI辅助的调试与错误修复
人工智能·笔记·重构·ai-native
Wang's Blog30 分钟前
Java 项目实战:交友项目环信云通信全解——体系集成、执行链路与 REST API 实战
java·spring·交友
god_cvz34 分钟前
第三章:12、经验沉淀与自优化
java·ai
小冯不疯36 分钟前
查询旺店通货品策略实战教程:从源系统拉取到轻易云的端到端落地
java·大数据·数据库
SunnyDays101141 分钟前
Java 实现 Excel 与 Markdown 相互转换:表格导出、格式设置与多表提取
java·excel转markdown·markdown转excel
宽容人厚载物1 小时前
芯驰 E3620 XTRG 配置笔记:EB 配置、典型实例与注意事项
笔记