弃用Java的终结器
JDK-8165641 (“ Deprecate Object.finalize”)已打開以“ deprecate Object.finalize() ”,因為“ finalizer本質上存在問題,使用finalizer可能會導致性能問題,死鎖,掛起和其他問題行為”,并且因為“終結的時間無法預測,無法保證將調用終結器?!?我最近在Java的Finalizer仍然存在的文章中,體驗并寫了一些使用Object.finalize()令人討厭的后果。
在消息RFR 9:8165641:Deprecate Object.finalize中 ,Roger Riggs邀請對與此問題相關的更改進行評論和評論[150條新行,其中包括在java.lang.Object.finalize()添加@Deprecated以及大量添加當前JDK類的Object.finalize()方法實現上的@SuppressWarnings(“ deprecation”)批注]。
建議為Object.finalize()方法添加Javadoc @deprecated文本,以重述JDK-8165641和Roger Riggs消息中包含的描述性信息。 這包括為“實例擁有非堆資源的類”“適當地實現java.lang.AutoCloseable”的建議,以及“提供一種允許顯式釋放那些資源的方法”的建議。 描述性信息還指出:“ {@link java.lang.ref.Cleaner }和{@link java.lang.ref.PhantomReference }提供了一種更靈活,更有效的方法,以在對象無法訪問時釋放資源?!?有關JDK 9引入的java.lang.ref.Cleaner的更多背景信息,請參見JDK-8138696 。 自從不贊成使用方法[ @Deprecated(since="9") ] @Deprecated(since="9") , Object.finalize()的棄用包括增強的@Deprecated注釋,以聲明狀態。
盡管建議的棄用Object.finalize()不會刪除使用Java終結器的功能或減少其任何潛在的負面影響,但它至少會提供關于使用該方法的風險的更加明顯的警告,并且當前已記錄,提供了更好的潛在替代方案。
翻譯自: https://www.javacodegeeks.com/2017/03/deprecating-javas-finalizer.html
總結
以上是生活随笔為你收集整理的弃用Java的终结器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国信通院:2023 年 7 月国内市场
- 下一篇: 外媒评苹果发布会:最大改进是芯片 USB