最近,OpenJDK邮件组core-libs-dev里出现了一封邮件,建议弃用Object类的finalize()方法。

\\

弃用Object类的方法将会是一件非常不寻常的事情。Java从 1.0开始就有了finalize()方法,不过这个方法一直被认为是一个糟糕的设计,也是Java平台的一个遗留的大“毒瘤”。

\\

垃圾回收器会特别对待覆盖了finalize()方法的对象。一般情况下,在垃圾回收期间,一个无法触及的对象会立即被销毁。不过,覆盖了finalize()方法的对象会被移动到一个队列里,一个独立的线程遍历这个队列,调用每一个对象的finalize()方法。在finalize()方法调用结束之后,这些对象才成为真正的垃圾,等待下一轮垃圾回收。

\\

Java的这种机制与C++里的RAll模式类似,创建对象的时候分配资源(比如文件句柄),在销毁对象时自动释放资源。

\\

不过,析构并不能安全地实现资源的自动管理,因为垃圾回收器并没有运行时间上的保证。也就是说,并不存在任何一种机制可以把资源的释放与对象的生命周期完全绑定在一起,如果处理不好还会耗尽资源。

\\

析构的使用已经偏离了它的设计初衷。

\\

多年来,Oracle(以及之前的Sun)建议开发者避免在一般的应用里使用析构。弃用析构意味着向彻底移除迈出了第一步,不过现在能做的也就是在使用析构时给出编译警告。

\\

现在并没有任何有关彻底移除析构机制的时间表,部分原因是因为Java平台上仍然存在一些使用析构的场景,这些场景与资源使用的管理并没有联系。已经有人在考虑如何对这些场景进行迁移,以便移除对析构机制的依赖。

\\

如果Java 9不会弃用析构(看起来不太可能),那么最早有可能会在Java 10里弃用。不过,最终是不是会在Java 10里弃用,或者在更晚的版本里,目前尚无定论。

\\

查看英文原文:Java finalization to be deprecated?

Java将弃用finalize()方法?相关推荐

  1. 好程序员Java学习路线分享finalize()方法详解

    好程序员Java学习路线分享finalize()方法详解,前言,finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法.. fi ...

  2. java object finalize_Java Object finalize() 方法

    Object finalize() 方法用于实例被垃圾回收器回收的时触发的操作. 当 GC (垃圾回收器) 确定不存在对该对象的有更多引用时,对象的垃圾回收器就会调用这个方法. 语法 protecte ...

  3. Java基础篇:finalize( )方法的使用

    有时当撤消一个对象时,需要完成一些操作.例如,如果一个对象正在处理的是非Java资源,如文件句柄或window字符字体,这时你要确认在一个对象被撤消以前要保证这些资源被释放.为处理这样的状况,Java ...

  4. finalize java,Java中Object对象finalize方法详细解析

    简书:capo 转载请注明原创出处,谢谢! 前言: 今天我们来看看Object中一个经常被人遗忘的方法,finalize方法.老规矩,我们先看看Javadoc是怎样描述这个方法的 /** * Call ...

  5. 【Java编程思想】finalize方法的真正用途?

    文章目录 前言 了解finalize之前需要知道三点 (用途1)finalize()方法释放本地方法申请的内存 gc和finalize都不保证一定发生 (用途2)finalize作为终结条件 前言 话 ...

  6. java finalize方法的使用

    <JAVA编程思想>: Java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize(). (1).对象不一定会被回收. (2).垃圾回收不是析构函数. ( ...

  7. 关于java中的finalize()方法

    关于finalize()方法,之前了解的并不是很多,看<java编程思想>时才对此有所了解,之后我又看了些博客,稍微总结了一下finalize()方法: java提供finalize()方 ...

  8. java中容易混淆的方法_java中容易混淆的概念

    java中容易混淆的概念 1. 谈谈 final, finally, finalize 的区别final-修饰符(关键字)如果一个类被声明为 final,意味着它不能再派生出新的子类,不 能作为父类被 ...

  9. Java中finalize方法的使用(经典白学,新idk已经弃用)

    在jdk文档中,其解释为当垃圾回收器确定不存在对该对象的更多的引用时,由对象的垃圾回收器调用此方法. 什么情况下会被回收:某个对象没有任何引用时,则jvm就认为这个对象是一个垃圾对象,用垃圾回收机制调 ...

最新文章

  1. 基于silverlight4(beta)的摄像头应用(Beta2)发布
  2. java mysql 操作类_Java 数据库简单操作类
  3. 关于oracle 安装下的LINUX系统参数的优化
  4. 评奖.婚礼及“形而上”
  5. GO语言-基础语法:条件判断
  6. 获取某一条_想获取流量?这几种工具是必须要有的,能帮你获客快人一步!
  7. C#开发笔记之14-如何用C#计算闰年?
  8. VMware Centos 网络配置
  9. oracle函数 length rpad lpad
  10. 火焰检测的相关步骤及算法综述
  11. Macbookpro键盘没有delete键怎么办
  12. Eclipse的各种查找,类的查找,方法查找快捷键
  13. 看完阿里p8整理的Spring Security应用到源码手册,豁然开朗
  14. 职场人士需了解:职场文件删除了三种恢复方法
  15. ipx互联网分组交换协议_什么是X.25分组交换网络协议?
  16. npm-run-all 同时运行多条命令
  17. 2019全球人才竞争力指数显示,华盛顿特区在城市排名中表现最出色
  18. 低代码行业未来如何?
  19. 互联网工作,应该先从这几本书开始
  20. Vue运行出现missing semicolon的解决方法

热门文章

  1. azure存储压力测试
  2. MSXML解析[转]
  3. 调试器定位变量的原理
  4. Does LGWR use synchronous IO even AIO enabled?
  5. opensuse download
  6. Windows-Server下加强系统安全性系列之方案【九】
  7. 在编写存储过程时使用 Set NoCount On
  8. python 屏幕找图 点击_捕获屏幕并查找参考图像
  9. Web应用渗透测试框架Arachni
  10. Kail Linux渗透测试教程之Recon-NG框架