java finalize 的使用

think of java p 89页

 一般不使用finalizer 方法

但是在一些情况下,它可以帮我们排除一些问题

eg:


class Book {


    boolean checkedOut = false;

    public Book(boolean checkedOut) {
        this.checkedOut = checkedOut;
    }

    public void checkedOut() {
        this.checkedOut = false;
    }

    @Override
    protected void finalize() throws Throwable {

        System.out.println("ok");
        if (checkedOut) {
            System.out.println("error");
        } else {
            System.out.println("ok");
        }
    }
}

public class Ter {


    public static void main(String[] args) {

        Book book = new Book(true);
        book.checkedOut();


        new Book(true);
        new Book(true);
        new Book(true);
        new Book(true);

        System.gc();


    }


}

结果:

ok

error

ok
error
ok
error
ok

error

可以看见,在直接使用匿名的new Book() 的方法,在调用System.gc(),的时候,他会自动调用当前没有应用的对象

尽可能的取回收空间,

在一些特许情况下,我们可以利用其这一点,判断一个资源是否可以被正确的回收



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值