Java12來了

不知不覺java12都來了,而我還在用8。

說一下java12的新特性

1.JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)

Shenandoah:低暫停時間的 GC(實驗性功能)

新增了一個名爲 Shenandoah 的 GC 算法,通過與正在運行的 Java 線程同時進行 evacuation 工作來減少 GC 暫停時間。使用 Shenandoah 的暫停時間與堆大小無關,這意味着無論堆是 200MB 還是 200GB,都將具有相同的暫停時間。

2.JEP 230: Microbenchmark Suite

微基準測試套件

JDK 源碼中新增了一套微基準測試套件,開發人員可通過它輕鬆運行已有的微基準測試並創建新的基準測試。

3.JEP 325: Switch Expressions (Preview)

Switch 表達式(預覽功能)

對 switch 語句進行了擴展,使其不僅可以作爲語句(statement),還可以作爲表達式(expression),並且兩種寫法都可以使用傳統的 switch 語法,或者使用簡化的 "case L ->" 模式匹配語法作用於不同範圍並控制執行流。這些更改將簡化日常編碼工作,併爲 switch 中的模式匹配(JEP 305)做好準備。

4.JEP 334: JVM Constants API

JVM 常量 API

引入 API 來對關鍵類文件(key class-file)和運行時工件(run-time artifacts)的名義描述(nominal descriptions)進行建模,特別是可從常量池加載的常量。

在新的 java.lang.invoke.constant 包中定義了一系列基於值的符號引用(JVMS 5.1)類型,它們能夠描述每種可加載常量。

符號引用以純 nominal 形式描述可加載常量,與類加載或可訪問性上下文區分開。有些類可以作爲自己的符號引用(例如 String),而對於可鏈接常量,定義了一系列符號引用類型(ClassDesc、MethodTypeDesc、MethodHandleDesc 和 DynamicConstantDesc),它們包含描述這些常量的 nominal 信息。

5.JEP 340: One AArch64 Port, Not Two

只保留一個 AArch64 實現

在保留 32 位 ARM 實現和 64 位 aarch64 實現的同時,刪除與 arm64 實現相關的所有源碼。

JDK 中存在兩套 64 位 ARM 實現,主要存在於 src/hotspot/cpu/arm 和 open/src/hotspot/cpu/aarch64 目錄。兩者都實現了 aarch64,現在將只保留後者,刪除由 Oracle 提供的 arm64。這將使貢獻者將他們的精力集中在單個 64 位 ARM 實現上,並消除維護兩套實現所需的重複工作。

6.JEP 341: Default CDS Archives

默認類數據共享歸檔文件

針對 64 位平臺,使用默認類列表增強 JDK 構建過程,以生成類數據共享(class data-sharing,CDS)歸檔。

7.JEP 344: Abortable Mixed Collections for G1

可中止的 G1 混合 GC

如果混合 GC 的 G1 存在超出暫停目標的可能性,則使其可中止。

8.JEP 346: Promptly Return Unused Committed Memory from G1

G1 及時返回未使用的已分配內存

增強 G1 GC,以便在空閒時自動將 Java 堆內存返回給操作系統。

爲了實現向操作系統返回最大內存量的目標,G1 將在應用程序不活動期間定期執行或觸發併發週期以確定整體 Java 堆使用情況。這將導致它自動將 Java 堆的未使用部分返回給操作系統。而在用戶控制下,可以可選地執行完整的 GC,以使返回的內存量最大化。

另外附上jdk12 api.chm 英文版

jdk12 api.chm

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章