Java 中的finalize()函数

finalize()是Object的一个方法,一旦垃圾回收器准备释放对象的内存空间的时候,首先会调用去finalize方法,并且在下一次垃圾回收动作的时候,才会把对象真正的回收。所以可以用finalize方法在垃圾回收对象之前做一些工作,比如:

public class Book {
    
    private boolean isCheckin = false;
    
    Book(boolean ischeckin) {
        this.isCheckin = ischeckin;
    }
    
    protected void finalize() {
        if(this.isCheckin) {
            //
        }else {
            //isCheckin = false 
            
        }
         
         try {
            super.finalize();
        } catch (Throwable e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new Book(true);
        new Book(false);
        System.gc();
    }

}

如果每个Book按照需求需要在isCheckin = true的时候被回收视为正常情况,那么如果在isCheckin = false 的时候将要被回收了,这种就是异常情况,我们可以在这里进行相关的逻辑处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供...
    简欲明心阅读 89,824评论 17 311
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,886评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,759评论 18 399
  • Java引用的种类 1.对象在内存中的状态 对于JVM的垃圾回收机制来说,是否回收一个对象的标准在于:是否还有引用...
    Jack921阅读 3,884评论 0 3
  • 墨迹磨叽,有很多墨迹磨叽,他们会同时出现在墨迹磨叽的脑海里,不停地自说自话。 墨迹磨叽很伤心,因为有很多很多朋友的...
    墨迹磨叽阅读 270评论 0 1