更新時間:2019-08-17 09:00:00 來源:動力節點 瀏覽2518次
Java 12 / JDK 12 正式發布有哪些新特性?具體變化有Shenandoah:低暫停時間的 GC(實驗性功能)、Microbenchmark Suite、Switch Expressions (Preview)、JVMConstants API、One AArch64 Port, Not Two、Default CDS Archives、Abortable Mixed Collections for G1、Promptly Return Unused Committed Memory from G1。
自 2 月 7 日開始,Java/JDK 12 就進入了 RC 階段。按照發布周期,美國當地時間 3 月 19 日,也就是今天 Java 12 正式發布了!
Java 12 帶來了一系列新特性:
189Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) 低暫停時間的 GC
230Microbenchmark Suite 微基準測試套件
325Switch Expressions (Preview) Switch 表達式
334JVM Constants API JVM 常量 API
340One AArch64 Port, Not Two 只保留一個 AArch64 實現
341Default CDS Archives 默認類數據共享歸檔文件
344Abortable Mixed Collections for G1 可中止的 G1 Mixed GC
346Promptly Return Unused Committed Memory from G1 G1 及時返回未使用的已分配內存
1、Shenandoah:低暫停時間的 GC(實驗性功能)
新增了一個名為 Shenandoah 的 GC 算法,通過與正在運行的 Java線程同時進行 evacuation 工作來減少 GC 暫停時間。使用 Shenandoah 的暫停時間與堆大小無關,這意味著無論堆是 200 MB 還是 200 GB,都將具有相同的暫停時間。
2、Microbenchmark Suite
微基準測試套件
JDK 源碼中新增了一套微基準測試套件,使開發人員可以輕松運行現有的微基準測試并創建新的基準測試。
3、Switch Expressions (Preview)
Switch 表達式(預覽功能)
擴展了 switch 語句,使其不僅可以作為語句(statement),還可以作為表達式(expression),并且兩種寫法都可以使用傳統的 switch 語法,或者使用簡化的“case L ->”模式匹配語法作用于不同范圍并控制執行流。這些更改將簡化日常編碼工作,并為 switch 中的模式匹配(JEP 305)做好準備。
4、JVM Constants API
JVM 常量 API
引入 API 對關鍵類文件和運行時工件建模,特別是可從常量池加載的常量。在新的 java.lang.invoke.constant 包中定義了一系列基于值的符號引用(JVMS 5.1)類型,它們能夠描述每種可加載常量。符號引用以純 nominal 形式描述可加載常量,與類加載或可訪問性上下文區分開。有些類可以作為自己的符號引用(例如 String),而對于可鏈接常量,定義了一系列符號引用類型(ClassDesc、MethodTypeDesc、MethodHandleDesc 和 DynamicConstantDesc),它們包含描述這些常量的 nominal 信息。
5、One AArch64 Port, Not Two
只保留一個 AArch64 實現
刪除了與 arm64 相關的所有源,同時保留 32 位 ARM 實現和 64 位 aarch64。
JDK 中存在兩套 64 位 ARM 實現,主要存在于 src/hotspot/cpu/arm 和 open/src/hotspot/cpu/aarch64 目錄。兩者都實現了 aarch64,現在將只保留后者,刪除由 Oracle 提供的 arm64。這將使貢獻者將他們的精力集中在單個 64 位 ARM 實現上,并消除維護兩套實現所需的重復工作。
6、Default CDS Archives
默認類數據共享歸檔文件
針對 64 位平臺,使用默認類列表增強 JDK 構建過程以生成類數據共享(class data-sharing,CDS)檔。
7、Abortable Mixed Collections for G1
可中止的 G1 Mixed GC
如果 G1 Mixed GC 存在超出暫停目標的可能性,則使其可中止。
Promptly Return Unused Committed Memory from G1
8、G1 及時返回未使用的已分配內存
增強 G1 GC,在空閑時自動將 Java 堆內存返回給操作系統。為了實現向操作系統返回最大內存量的目標,G1 將在應用程序不活動期間定期執行或觸發并發周期以確定整體 Java 堆使用情況。這將導致它自動將 Java 堆的未使用部分返回給操作系統。而在用戶控制下,可以可選地執行完整的 GC,以使返回的內存量最大化。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習