寫在前面
看到 JDK 12又釋出了,萌新不知不覺感覺瑟瑟發抖,從 Java 1.8的函數語言程式設計思維和正規化 到 Java 1.9的模組化特性的加持 以及還沒來得及深切感受一下 Java 1.11 的 ZGC強大之後,這次JDK 12到底有搞了些啥事情呢?我真的學不動了,我該怎麼辦呢?
不管怎樣,下面還是來看一下JDK 12的新特性解(fan)讀(yi)吧!
可 長按 或 掃描 下面的 小心心 來訂閱作者公眾號 CodeSheep,獲取更多 務實、能看懂、可復現的 原創文 ↓↓↓
低暫停延時的垃圾收集器 (實驗版)
A Low-Pause-Time Garbage Collector (Experimental)
新增一個名為 Shenandoah的新垃圾收集 (GC)演算法,該演算法通過與正在執行的 Java執行緒併發執行回收工作來減少 GC暫停時間。Shenandoah的暫停時間與堆大小無關,這意味著無論堆大小是 200MB 還是 200GB,都將擁有相同的暫停時間。
微基準測試套件
Microbenchmark Suite
在 JDK原始碼中新增了一組基本的微基準測試套件,使得開發人員無論執行現有的微基準測試或者建立新的微基準測試都變得十分便利。
Switch 表示式 (預覽版)
Switch Expressions (Preview)
這是一個預覽版語言特性。通過對 switch語法進行了擴充套件,使其不僅可以作為語句(statement),還可以作為表示式(expression),並且兩種形式都可以使用“傳統的”或“簡化的”語法用於作用於不同的範圍或者控制執行流。這些更改將會簡化日常編碼,並且為在 switch中使用模式匹配 (JEP 305) 做好了準備。
JVM 常量API
JVM Constants API
引入一個API來建模關鍵類檔案(key class-file)和執行時構件(run-time artifacts)的標稱描述,特別是對那些可從常量池載入的常量。
僅保留 AArch64 實現
One AArch64 Port, Not Two
刪除與 arm64實現相關的所有原始碼,同時保留 32-bit ARM和 64-bit aarch64實現。刪除這些實現是為了讓所有程式碼貢獻者集中精力於一個實現上,從而消除維護兩個實現所需付出的重複工作。
預設類資料共享歸檔檔案
Default CDS Archives
增強 JDK構建過程,在 64位平臺上使用預設的類列表生成類資料共享(class data-sharing,CDS)存檔。
可中斷的 G1 Mixed GC
Abortable Mixed Collections for G1
如果 Mixed GC 的 G1 存在超出暫停目標的可能性,則使其可被中止。
G1未使用分配記憶體即時返回
Promptly Return Unused Committed Memory from G1
增強 G1垃圾收集器,以便在空閒時自動將 Java 堆記憶體返回給作業系統。
參考文獻
- openjdk.java.net/jeps/189
- openjdk.java.net/jeps/230
- openjdk.java.net/jeps/325
- openjdk.java.net/jeps/334
- openjdk.java.net/jeps/340
- openjdk.java.net/jeps/341
- openjdk.java.net/jeps/344
- openjdk.java.net/jeps/346
後 記
啥都不說了,JDK 13您慢點出吧,快要掉隊了,我跟不上了...
由於能力有限,若有錯誤或者不當之處,還請大家批評指正,一起學習交流!
- My Personal Blog:CodeSheep 程式羊