finalize方法

package object_;

//对象被回收的时候,系统自动调用finalize方法(子类可以重写该方法,做一些资源回收的操作)
//可以重写finalize方法,完成一些需要的功能(例如释放资源)【不重写的话就默认调用Object类的这个方法】
public class finalize {
    public static void main(String[] args) {
        Car car = new Car("小车");
        car = null;//上一行代码car指向了堆里面的一个空间,这行指向空,这时就是个垃圾(会被回收【finalize】)
        System.out.println("ok");
    }
}

class Car{
    private String name;

    public Car(String name) {
        this.name = name;
    }

    //重写finalize

    @Override
    protected void finalize() throws Throwable {
//        super.finalize();     [默认调用父类的finalize方法]
        System.out.println(name+"被回收");
    }
}

 为啥重写的finalize方法里面的内容没有被输出?

不是只要一个对象成为垃圾就立马被回收(finalize有它自己的一套算法)

 

System.gc();//主动调用垃圾回收器(不是百分百成功调用)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值