網友評分: 5分
jdk12帶來了一些增強功能,包括增強的switch語句,增強的垃圾收集器功能,支持微基準測試,支持默認的類數據共享等等,其中增強的switch語句不僅可以作為語句也可以作為表達式,無論作為語句或者作為表達式,switch都可以使用傳統/簡化的作用域和控制流行為,這將有助于簡化代碼,并為在switch中使用模式匹配鋪平道路,而jdk12中添加了一套微基準測試,大約100個,這簡化了現有微基準測試的運行和新基準測試的創建過程。
1、【Switch 表達式】
使用Java 12,switch不僅可以作為語句也可以作為表達式。 無論作為語句或者作為表達式,switch都可以使用傳統/簡化的作用域和控制流行為。 這將有助于簡化代碼,并為在switch中使用模式匹配鋪平道路。
Java開發人員正在增強Java編程語言,以使用模式匹配來解決當前switch語句的幾個問題。 這包括:switch塊的默認控制流行為,switch塊默認作用域(被視為單個作用域的塊)和switch僅作為語句。
在Java 11中,switch語句追隨C和C++,默認情況下使用fall-through語義。 雖然傳統的控制流程在編寫低級代碼時很有用,但隨著switch在更高級別的環境中采用,易出錯會蓋過其靈活性。
2、【默認CDS歸檔】
通過在64位平臺上的默認類列表的幫助下生成CDS歸檔來改進JDK構建過程,從而有效地消除了運行java -Xshare:dump。 此功能的目標包括:1。)改進開箱即用的啟動時間,以及2.)擺脫使用-Xshare:dump。
3、【Shenandoah GC】
Shenandoah是一種垃圾收集(GC)算法,旨在保證低延遲(10 - 500 ms的下限)。 它通過在運行Java工作線程的同時執行GC操作減少GC暫停時間。 使用Shenandoah,暫停時間不依賴于堆的大小。 這意味著無論堆的大小如何,暫停時間都是差不多的。
這是一個實驗性功能,不包含在默認(Oracle)的OpenJDK版本中。
4、【JMH 基準測試】
jdk12為JDK源代碼添加了一套微基準測試(大約100個),簡化了現有微基準測試的運行和新基準測試的創建過程。 它基于Java Microbenchmark Harness(JMH)并支持JMH更新。
此功能使開發人員可以輕松運行當前的微基準測試并為JDK源代碼添加新的微基準測試。 可以基于Java Microbenchmark Harness(JMH)輕松測試JDK性能。 它將支持JMH更新,并在套件中包含一組(約100個)基準測試。
5、【JVM 常量 API】
JEP 334引入了一個API,用于建模關鍵類文件和運行時artifacts,例如常量池。 此API將包括ClassDesc,MethodTypeDesc,MethodHandleDesc和DynamicConstantDesc等類。此 API 對于操作類和方法的工具很有幫助。
6、【G1的可中斷 mixed GC】
此功能通過將Mixed GC集拆分為強制部分和可選部分,使G1垃圾收集器更有效地中止垃圾收集過程。通過允許垃圾收集過程優先處理強制集,g1可以更多滿足滿足暫停時間目標。
G1是一個垃圾收集器,設計用于具有大量內存的多處理器機器。由于它提高了性能效率,g1垃圾收集器最終將取代cms垃圾收集器。
G1垃圾收集器的主要目標之一是滿足用戶設置的暫停時間。G1采用一個分析引擎來選擇在收集期間要處理的工作量。此選擇過程的結果是一組稱為GC集的區域。一旦GC集建立并且GC已經開始,那么G1就無法停止。
如果G1發現GC集選擇選擇了錯誤的區域,它會將GC區域的拆分為兩部分(強制部分和可選部分)來切換到處理Mix GC的增量模式。如果未達到暫停時間目標,則停止對可選部分的垃圾收集。
7、【G1歸還不使用的內存】
此功能的主要目標是改進G1垃圾收集器,以便在不活動時將Java堆內存歸還給操作系統。 為實現此目標,G1將在低應用程序活動期間定期生成或持續循環檢查完整的Java堆使用情況。
這將立即歸還未使用的部分Java堆內存給操作系統。 用戶可以選擇執行FULL GC以最大化返回的內存量。
8、【移除多余ARM64實現】
jdk12將只有一個ARM 64位實現(aarch64)。 目標是刪除所有與arm64實現相關的代碼,同時保留32位ARM端口和64位aarch64實現。
這將把重點轉移到單個64位ARM實現,并消除維護兩個實現所需的重復工作。 當前的JDK 11實現中有兩個64位ARM實現。