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

相关推荐
gugucoding12 分钟前
57. 【Java】日志框架:SLF4J与Logback
java·开发语言·logback
今天的砖头有点烫手啊12 分钟前
JVM 调优实战:从 GC 日志到参数优化,一次完整排查
java·jvm
疯狂打码的少年17 分钟前
【数据结构】八大排序算法对比总结(时间/空间/稳定性)
数据结构·笔记·算法
selia107818 分钟前
AI手撕代码笔记
人工智能·笔记·深度学习
一只旭宝20 分钟前
预约系统版本2(pyhton+flask可视化版本)
服务器·数据库·c++·笔记·python·flask
敢敢のwings31 分钟前
世界模型与FlashWorld:从“在梦中学习“到秒级3D场景生成
android·学习·3d
那年窗外下的雪.31 分钟前
AIDC 学习日志|第 14 天|MAC Flapping 与 EVPN 多归属分层排障
网络·git·学习·macos·github·spine
爱奥尼欧33 分钟前
10.C++ string 实现详解
java·开发语言·c++
小飞学编程...35 分钟前
【equals 、Comparable、Comparator 三者的区别】
java·python
骇客野人43 分钟前
Java分布式任务调度方案(完整落地指南)
java·开发语言·分布式