1. 程式人生 > 實用技巧 >你可能不知道的java14新特性

你可能不知道的java14新特性

新特性一、簡化instanceof

PS:如果大家在學習過程中遇到什麼問題,或者缺乏相關的學習資料,可檢視我的公告欄獲取,有問題隨問隨答,還有我這段時間整理的一些Java學習手冊,面試題,開發工具,PDF文件書籍教程,需要的話都可以免費分享給大家。

新特性二、改進NullPointerException

jdk14中這個新特效能夠告訴你到底是那個方法導致空指標異常,而再jdk14以前則只會告訴你哪一行程式碼報空指標異常。如果遇到鏈式呼叫的程式碼則不能確定到底是那個環節導致了異常

再程式執行的時候需要新增一行引數:-XX:+ShowCodeDetailsInExceptionMessages


可能後期版本中就會將其作為預設引數,但再java14中需要新增這個引數才能使用這個新特性

新特性三、Rocord (預覽特性、後期版本一定會被確定下來)

record的出現是為了解決java囉嗦的用來作為資料的承載類(entity層),例如get、set、toString等方法
如下定義程式碼

編譯後就

成員屬性是final的只有get方法,與以前的不同採用變數名作為get方法的方法名
如下示例程式碼

record注意點

record可以定義靜態的屬性、靜態的方法、構造方法、例項方法

  1. 如果宣告非靜態的屬性則會報語法錯誤

2.不可以將record定義的類宣告為abstract的
下面的定義不符合語法

3.不可以給record定義的類宣告顯式的父類(非Record類)下面的定義不符合語法

新特性四、棄用ParallelScavenge (Young區的GC)與

SerialOld GC (Old區的GC)組合作為GC

這個組合的使用場景是擁有一個很大的Young區和一個很小的Old區

廢棄了parallel young generation GC與SerialOld GC的組合( -XX:+UseParallelGC與XX:-UseParallelOldGC配合開啟),現在使用-XX:+UseParallelGC -XX:UseParallelOldGC或者-XX:-UseParallelOldGC

都會出現告警如下

Java HotSpot(TM) 64-Bit Server VM warning: Option UseParallelOldGC was deprecated in version 14.0 and will likely be removed in a future release.

新特性五、直接刪除CMS垃圾回收器,在Jdk9時就已經標記為廢除

CMS的弊端 :

  1. 會產生記憶體碎片,導致併發清除後,使用者執行緒可用的空間不足。
  2. 既然強調了併發(Concurrent),CMS收集器對CPU資源非常敏感
  3. CMS 收集器無法處理浮動垃圾(一邊回收、另一邊產生垃圾稱為浮動垃圾)

新特性六、ZGC(未來的垃圾回收器,STW在10ms以內)

使用方式