写点什么

Java 将弃用 finalize() 方法?

  • 2017-03-29
  • 本文字数:720 字

    阅读完需:约 2 分钟

最近,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?

2017-03-29 19:005902
用户头像

发布了 322 篇内容, 共 142.7 次阅读, 收获喜欢 147 次。

关注

评论

发布
暂无评论
发现更多内容

公开课 | 金九银十,测试开发面试秘籍大公开!

测试人

软件测试

眉山等保测评机构有哪些?在哪里?

行云管家

等保 眉山

NocoBase 与 Appsmith:哪个低代码平台更适合你?

NocoBase

低代码 开发工具 无代码

数据为王:人工智能如何引领软件开发新时代

天津汇柏科技有限公司

人工智能 软件开发

autocad2021 mac破解版安装教程-AutoCAD 2021mac版自带中文

Rose

让Kimi像人类思考的“Kimi探索版“已开启灰度内测!GPT-o1贡献者之一宣布离职|AI日报

可信AI进展

线上事故风险解读之数据库篇

巧手打字通

MySQL 数据库 架构 后端 经验总结

百度智能云新一代云原生产品加速 AI 原生应用落地

Baidu AICLOUD

云原生 AI 原生

传统IT设备包括哪些?堡垒机可以全部管理吗?

行云管家

网络安全 堡垒机

Ulysses教程_让Ulysses更便捷的使用技巧

Rose

几大远程软件怎么选?为何我推荐使用向日葵?

科技热闻

【论文速读】| AutoSafeCoder:通过静态分析和模糊测试保障LLM代码生成安全的多智能体框架

云起无垠

实测9款AI文件助手!原来最好用的并不是全网称赞的谷歌NotebookLM...

可信AI进展

人工智能、

探索5G工厂:技术赋能下的工业革新

万界星空科技

智能制造 mes 万界星空科技mes 5G智能工厂

苹果Mac电脑想要实现双系统运行,Parallels Desktop虚拟机来帮你!

Rose

Autodesk Maya 2025 for mac完美破资源 玛雅2025下载 兼容M及Intel芯片

Rose

云栖实录 | 智能运维年度重磅发布及大模型实践解读

阿里云大数据AI技术

运维 云原生 gitops 智能运维 大模型

MES系统如何实现生产过程的全流程追溯

万界星空科技

产品管理 mes 万界星空科技 产品追溯 车间管理

OpenHarmony技术引领筑生态 万物智联创未来

最新动态

地平线双目深度估计参考算法 StereoNetPlus 优化思路解读

地平线开发者

自动驾驶; 算法、

如何检查Mac上是否启用了SIP系统完整性保护

Rose

别分管理与实践,质量体系是一个整体

BY林子

质量管理 软件质量 质量体系

曲面LED屏:视觉革新与使用优势的深入分析

Dylan

技术 视觉 LED display LED显示屏 市场

Photoshop2021中文版 附ps2021破解补丁 及一键替换天空使用教程

Rose

国内首个专业领域知识增强服务框架 KAG 技术报告,助力大模型落地垂直领域

可信AI进展

人工智能

Apache Doris 2.0.15 版本发布

SelectDB

数据库 搜索引擎 数据仓库 大数据 开源 实时分析

有限元分析边界条件、节点、收敛分别是什么意思?

思茂信息

节点 有限元分析 边界条件 收敛

photoshop 运行弹窗This non-genuine Adobe app has been disabled

Rose

Mac窗口管理软件合集|告别混乱屏幕,一切井井有条。

Rose

首届中国室内AI设计大赛启动,美学与科技助力,助力产业新增长!

Geek_2d6073

iLogtail 开源两周年:UC 工程师分享日志查询服务建设实践案例

阿里巴巴云原生

阿里云 云原生 iLogtail

Java将弃用finalize()方法?_Java_Ben Evans_InfoQ精选文章