• Thinking in java学习笔记之finalize


    finalize:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下次垃圾回收动作发生时,才会
    真正回收对象占用的内存,所以可用此作为对象终结条件的验证。
    注意的三点:
    1.对象可能不被垃圾回收
    2.垃圾回收不等于“析构”
    3.垃圾回收只与内存有关
    示例代码:
    public
    class Book { boolean checkedOut =false; Book(boolean checkOut){ checkedOut=checkOut; } void checkIn(){ checkedOut=false; } protected void finalize(){ if(checkedOut){ System.out.println("Error ,checked out"); try { super.finalize(); } catch (Throwable e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public class TerminationConditon { public static void main(String[] args) { Book novel = new Book(true); novel.checkIn(); new Book(true); System.gc();//输出:Error ,checked out
    //System.gc()属于强制进行终结动作。即使不这样做,通过重复执行程序导致大量内存被占用也会引起垃圾回收动作的执行。 } }

    本例的终结条件是所有的book在被当做垃圾回收前都应该checkIn,但由于main方法的错误,有一本书未被checkIn,可以用finalize来验证终结条件。
  • 相关阅读:
    Java使用google开源工具Thumbnailator实现图片压缩
    nginx基本配置
    CopyPropertis
    微服务(Microservices )简介
    jQuery ajax()使用serialize()提交form数据
    $.getJSON( )的使用方法简介
    理解 CSS 的 z-index 属性
    JS中的call()和apply()方法
    CSS文字换行详细解说
    如何实现JS函数的重载
  • 原文地址:https://www.cnblogs.com/yansum/p/6072642.html
Copyright © 2020-2023  润新知