首页 产业 观察 点评 展会 新品 厂商 区块链 客户端
中国IT产经新闻 / 互联网
做必要的清理工作Finalize在垃圾收集器删除前调用
编辑:IT产经
2020-09-11
来源:

       finalize是Object中的方法,当垃圾回收器将要回收对象所占内存之前被调用,即当一个对象被虚拟机宣告死亡时会先调用它finalize()方法,让此对象处理它生前的最后事情(这个对象可以趁这个时机挣脱死亡的命运)。


       finalize-方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前被自动调用的。垃圾收集器只知道释放那些由new分配的内存,所以不知道如何释放对象的“特殊”内存。为解决这个问题,Java提供了一个名为finalize()的方法,它的工作原理是这样的:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作(如关闭流等操作)。但JVM(Java虚拟机)不保证此方法总被调用。
       finalize的作用
       finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。finalize()与C++中的析构函数不是对应的。C++中的析构函数调用的时机是确定的(对象离开作用域或delete掉),但Java中的finalize的调用具有不确定性。不建议用finalize方法完成“非内存资源”的清理工作,但建议用于:① 清理本地对象(通过JNI创建的对象);② 作为确保某些非内存资源(如Socket、文件等)释放的一个补充:在finalize方法中显式调用其他资源释放方法。

0
网友评论[查看全部] 评论总数:0
    
    验证码:    
IT大杂汇 更多

随着《二十不惑》《三十而已》等电视剧的热播,不难看出90、95后的年轻一代基本进入婚育高峰期,并成为婴幼儿行业消费的主力军或预备军。   ...[详细]

点评(0)
更新时间:2020-09-03

2020年7月31日,在阵阵热烈的掌声中,简·学院首期师资内训圆满落下帷幕!本次培训为期20天,曲江加盟校的6名学员参与了本次学习。   &...[详细]

点评(0)
更新时间:2020-09-03
IT产经新闻
点评(0)
更新时间:2020-08-31

8月27日晚,国内造车新势力小鹏汽车在美国纽交所成功上市后,天猫庆祝小鹏汽车IPO成功, 同时聚划算宣布补贴小鹏汽车。 当晚,“聚划算百亿补...[详细]

点评(0)
更新时间:2020-08-28
热点聚焦更多
厂商动态更多
展会聚焦 更多
产业报告更多
网红经济更多
  • CopyRight @ 2008-2020 中国IT产经新闻网 All Right Reserved 违者必究 京备05618372