JDK 20 搶先體驗發行說明

banq發表於2022-11-19

這是 JDK 20 隨附的發行說明草稿,內容在釋出前可能會發生變化。點選標題見詳細

Build 22:

  • 禁用 TLS_ECDH_* 密碼套件( JDK-8279164 )
  • IdentityHashMap 的刪除和替換方法使用物件標識( JDK-8178355 )
  • 在 macOS 上,檔名不再規範化為 Apple 的 Unicode 規範化格式 D 變體 ( JDK-8289689 )
  • 在InvalidParameterException中 新增了建構函式 (String, Throwable) 和 (Throwable )( JDK-8296226 )
  • 棄用和禁用不支援並行的類加​​載器的舊版並行類載入解決方法( JDK-8295673 )
  • java.net.URL 建構函式已棄用( JDK-8294241 )
  • 禁用 DTLS 1.0 ( JDK-8256660 )
  • 新方法 Path::getExtension 返回檔案的副檔名 ( JDK-8057113 )
  • JMX 連線預設使用 ObjectInputFilter ( JDK-8283093 )
  • 支援 Unicode 15.0 ( JDK-8284842 )


Build 21:

  • 改進了 G1 併發細化執行緒的控制 ( JDK-8137022 )

G1 併發細化執行緒的控制已被完全取代。新控制器通常分配更少的執行緒。它往往在細化執行緒活動中具有較少的尖峰。它還傾向於延遲細化,當有多個寫入相同或附近的位置時,允許寫入屏障進行更多過濾,從而提高屏障的效率。
有許多命令列選項用於為舊控制器提供引數值。這些與新控制器無關,不再有任何用處。它們都已經過時了;在命令列上指定它們中的任何一個都只會列印一條關於該選項已過時的警告訊息。

-XX:-G1UseAdaptiveConcRefinement

-XX:G1ConcRefinementGreenZone=buffer-count

-XX:G1ConcRefinementYellowZone=buffer-count

-XX:G1ConcRefinementRedZone=buffer-count

-XX:G1ConcRefinementThresholdStep=buffer-count

-XX:G1ConcRefinementServiceIntervalMillis=msec



Build 20:

  • FileChannel 位置寫入在 APPEND 模式下未指定 ( JDK-6924219 )
  • 新的 JFR 事件:jdk.InitialSecurityProperty ( JDK-8292177 )
  • 在輸入錯誤的情況下呼叫的URL建構函式可能會丟擲以前沒有丟擲的MalformedURLException。 (JDK-8293590)
  • GetLocalXXX/SetLocalXXX 規範應該要求暫停目標執行緒( JDK-8288387 )


Build 17:

  • Thread.suspend/resume 更改為丟擲 UnsupportedOperationException ( JDK-8249627 )
  • Thread.Stop 更改為丟擲 UnsupportedOperationException ( JDK-8289610 )
  • 新的 JFR 事件:jdk.SecurityProviderService ( JDK-8254711 )


Build 16:


在 JDK 17 G1 中新增了“預防性”垃圾收集 (GC):這些是推測性垃圾收集,目的是避免在堆快滿時由於分配突發而導致代價高昂的疏散失敗。
然而,這些(推測性的)收集會帶來額外的垃圾收集工作——因為物件老化是基於 GC 的數量,額外的 GC 會導致過早地提升到老年代——這會導致老年代中的更多資料,以及更多的垃圾收集努力移除這些物體。當前預測觸發預防性垃圾收集非常保守,這使情況更加複雜;這意味著這些垃圾回收通常是在不必要的情況下觸發的。

預設情況下已禁用,可使用下面配置被重新啟用:

-XX:+UnlockDiagnosticVMOptions -XX:+G1UsePreventiveGC



 

相關文章