【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方法实现垃圾回收机制

相关推荐
一点程序12 分钟前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
C雨后彩虹14 分钟前
计算疫情扩散时间
java·数据结构·算法·华为·面试
2601_9498095918 分钟前
flutter_for_openharmony家庭相册app实战+我的Tab实现
java·javascript·flutter
vx_BS813301 小时前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计
2601_949868361 小时前
Flutter for OpenHarmony 电子合同签署App实战 - 已签合同实现
java·开发语言·flutter
ling___xi1 小时前
《计算机网络》计网3小时期末速成课各版本教程都可用谢稀仁湖科大版都可用_哔哩哔哩_bilibili(笔记)
网络·笔记·计算机网络
星火开发设计1 小时前
类型别名 typedef:让复杂类型更简洁
开发语言·c++·学习·算法·函数·知识
达文汐1 小时前
【困难】力扣算法题解析LeetCode332:重新安排行程
java·数据结构·经验分享·算法·leetcode·力扣
培风图南以星河揽胜1 小时前
Java版LeetCode热题100之零钱兑换:动态规划经典问题深度解析
java·leetcode·动态规划
Gorgous—l1 小时前
数据结构算法学习:LeetCode热题100-多维动态规划篇(不同路径、最小路径和、最长回文子串、最长公共子序列、编辑距离)
数据结构·学习·算法