finalize()方法

本文介绍了Java中finalize()方法的工作原理及其应用场景。垃圾回收器在准备释放对象占用的存储空间前,会调用该方法执行一些清理工作。文章通过一个具体的Book类示例展示了如何在finalize()方法中设置终结条件。
摘要由CSDN通过智能技术生成

finalize()方法负责一些清理工作。
应用场合:
垃圾回收器只能释放哪些经由new释放的内存,假定对象(并非使用new)获得了一块“特殊”的内存区域,垃圾回收器无法回收,为了应对这种情况,java允许在类中定义一个名为finalize()的方法。
工作原理:
一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。
特点:
finalize()在Object类中定义,我们可以重新finalize()方法,垃圾回收器会自动调用
终结条件:
定义:可以在finalize()内部加入判断条件,当符合条件时再进行其中的清理工作。
例:

class Book extends Object{
    boolean cheakedOut = false;
    Book(boolean cheakedOut){
        cheakedOut = cheakedOut;
    }
    void checkIn(){
        cheakedOut = false;
    }
    protected void finalize(){
        if(cheakedOut)//终结条件
        System.out.println("Error:cheackedOut");
    }
}
public class tt{
    public static void main(String[] args) {
        Book novel = new Book(true);
        novel.checkIn();
        Book novel2 = new Book(true);
        novel2.checkIn();
        System.gc();
    }
}

注意:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值