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

相关推荐
好奇龙猫8 小时前
【AI学习-comfyUI学习-第三十节-第三十一节-FLUX-SD放大工作流+FLUX图生图工作流-各个部分学习】
人工智能·学习
Boilermaker19928 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
saoys8 小时前
Opencv 学习笔记:图像掩膜操作(精准提取指定区域像素)
笔记·opencv·学习
Cherry的跨界思维8 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
alonewolf_999 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子9 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji34169 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
电子小白1239 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout
恋爱绝缘体19 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
唯情于酒9 小时前
Docker学习
学习·docker·容器