赞助推广网推广标签      禁止一切违法信息推广,否则封号,本站所有信息为网友发布,谨防上当受骗!

免费推广

QQ登录

免注册,加入推广网

免注册,成为推广员

查看: 48|回复: 0
上一主题 下一主题

Finalize在对象被虚拟机宣告死亡时会先调用它

[复制链接]

998

主题

998

帖子

1万

积分

禁止发言

最后登录
2021-8-16
注册时间
2018-12-1
跳转到指定楼层
楼主
    finalize是Object中的方法,当垃圾回收器将要回收对象所占内存之前被调用,即当一个对象被虚拟机宣告死亡时会先调用它finalize()方法,让此对象处理它生前的最后事情(这个对象可以趁这个时机挣脱死亡的命运)。

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

扫描二维码
手机浏览本页面

小黑屋|广告服务|联系我们|推广帮助|(京ICP备16009988号)

中国推广网(推广论坛)是免费网络推广平台||免费推广就上中国推广网

技术支持:推广网官方

中国推广网·推广精英聚集地

快速回复 返回顶部 返回列表