• 7.2.2垃圾收集和对象的终结


    7.2.2垃圾收集和对象的终结

    前面的章节中曾讲过,Java虚拟机实现必须具有某种自动堆存储管理策略一大部分是采用 垃圾收集器,本章前面也讲过,程序可以明确或者隐含地为对象分配内存,但是不能明确地释 放内存。但一个对象不再为程序所引用了,虚拟机必须回收(垃圾收集)那部分内存。实现可 以决定何时应垃圾收集不再被引用的对象——或者决定是否裉本不收集它们。并没有要求Java虚 拟机实现一定要释放不再被引用的对象所占据的内存。

    如果类声明了一个名为finalize ()的返回void的方法,垃圾收集器会在释放这个实例所占据 的内存空间之前执行这个方法(被称为终结方法)一次。下面是一个声明了终结方法的类的例子:

    //On CO-ROM in file classlife/ex7/Finale.java
    class Finale {

    protected void finalize() {

    System.out.printIn("A Finale object was finalized.");
    }
    }

    因为一个终结方法是一个普通的Java方法,它可以直接被程序所调月。这样的直接调用不会 影响垃圾收集器的自动调用过程。垃圾收集器(最多)只会调用一个对象的终结方法一次一在 对象变成不再被引用的之后的某个时候,在占据的对象被重用之前。如果终结方法代码执行后, 对象重新被引用了(复活了),随后再次变得不被引用,垃圾收集器不会第二次调用终结方法。

    垃圾收集器自动调用的finalize ()方法抛出的任何异常都将被忽略。垃圾收集器可以用任意 顺序调用finalize ()方法,使用任意线程,甚至并行使用多线程。第9章将描述终结过程的细节。

  • 相关阅读:
    【LInux】查看Linux系统版本信息
    【Linux】常用命令,持续更新
    【Linux】rpm常用命令及rpm参数介绍
    【CentOS】设置服务开机自动启动
    查看所使用的Linux系统是32位还是64 位的方法
    spring中@param和mybatis中@param使用区别
    Linux下Mycat安装配置和使用
    CentOS 7下MySQL服务启动失败的解决思路
    java的排序算法
    File 操作
  • 原文地址:https://www.cnblogs.com/mongotea/p/11979550.html
Copyright © 2020-2023  润新知