Java 13 特性解讀

      網友投稿 832 2022-05-29

      Hollis

      一個對Coding有著獨特追求的人。 我已加入“***騎士”(rightknights.com)的版權保護計劃

      2017年8月,JCP執行委員會提出將Java的發布頻率改為每六個月一次,新的發布周期嚴格遵循時間點,將在每年的3月份和9月份發布。

      目前,JDK官網上已經可以看到JDK 13的進展,最新版的JDK 13將于2019年9月17日發布。

      目前,JDK13處于Release-Candidate Phase(發布候選階段),將于9月17日正式發布。目前該版本包含的特性已經全部固定,主要包含以下五個:

      JEP 350,Dynamic CDS Archives

      JEP 351,ZGC: Uncommit Unused Memory

      JEP 353,Reimplement the Legacy Socket API

      JEP 354: Switch Expressions (Preview)

      JEP 355,Text Blocks (Preview)

      Java 13 特性解讀

      下面來逐一介紹下這五個重要的特性。

      1、Dynamic CDS Archives

      這一特性是在JEP310:Application Class-Data Sharing 基礎上擴展而來的,Dynamic CDS Archives中的CDS指的就是Class-Data Sharing。

      那么,這個JEP310是個啥東西呢?

      我們知道在同一個物理機/虛擬機上啟動多個JVM時,如果每個虛擬機都單獨裝載自己需要的所有類,啟動成本和內存占用是比較高的。所以Java團隊引入了CDS的概念,通過把一些核心類在每個JVM間共享,每個JVM只需要裝載自己的應用類,啟動時間減少了,另外核心類是共享的,所以JVM的內存占用也減少了。

      CDS 只能作用于 Boot Class Loader 加載的類,不能作用于 App Class Loader 或者自定義的 Class Loader 加載的類。

      在 Java 10 中,則將 CDS 擴展為 AppCDS,顧名思義,AppCDS 不止能夠作用于 Boot Class Loader了,App Class Loader 和自定義的 Class Loader 也都能夠起作用,大大加大了 CDS 的適用范圍。也就說開發自定義的類也可以裝載給多個JVM共享了。

      Java 10中包含的JEP310的通過跨不同Java進程共享公共類元數據來減少了內存占用和改進了啟動時間。

      但是,JEP310中,使用AppCDS的過程還是比較復雜的,需要有三個步驟:

      1、決定要 Dump 哪些 Class

      2、將類的內存 Dump 到歸檔文件中

      3、使用 Dump 出來的歸檔文件加快應用啟動速度

      這一次的JDK 13中的JEP 350 ,在JEP310的基礎上,又做了一些擴展。允許在Java應用程序執行結束時動態歸檔類,歸檔類將包括默認的基礎層 CDS(class data-sharing)存檔中不存在的所有已加載的應用程序類和庫類。

      也就是說,在Java 13中再使用AppCDS的時候,就不在需要這么復雜了。

      2、ZGC: Uncommit Unused Memory

      在討論這個問題之前,想先問一個問題,JVM的GC釋放的內存會還給操作系統嗎?

      GC后的內存如何處置,其實是取決于不同的垃圾回收器的。因為把內存還給OS,意味著要調整JVM的堆大小,這個過程是比較耗費資源的。

      在JDK 11中,Java引入了ZGC,這是一款可伸縮的低延遲垃圾收集器,但是當時只是實驗性的。并且,ZGC釋放的內存是不會還給操作系統的。

      而在Java 13中,JEP 351再次對ZGC做了增強,本次 ZGC 可以將未使用的堆內存返回給操作系統。之所以引入這個特性,是因為如今有很多場景中內存是比較昂貴的資源,在以下情況中,將內存還給操作系統還是很有必要的:

      1、那些需要根據使用量付費的容器

      2、應用程序可能長時間處于空閑狀態并與許多其他應用程序共享或競爭資源的環境。

      3、應用程序在執行期間可能有非常不同的堆空間需求。例如,啟動期間所需的堆可能大于稍后在穩定狀態執行期間所需的堆。

      3、Reimplement the Legacy Socket API

      4、Switch Expressions (Preview)

      5、Text Blocks (Preview)

      本文轉載自公眾號【程序員小灰】

      Java 緩存

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【錯誤記錄】Google Play 上架報錯 ( 此版本不符合 Google Play 關于提供 64 位版本應用的要求 )
      下一篇:【Android 安裝包優化】資源混淆 ( AAPT2 資源編譯工具 | resources.arsc 資源映射表 工作機制 )
      相關文章
      日韩亚洲人成在线| 666精品国产精品亚洲| 亚洲国产电影在线观看| 亚洲AV无码日韩AV无码导航| 久久精品国产亚洲网站| 国产V亚洲V天堂A无码| 亚洲国产精品成人| 亚洲精品无码AV中文字幕电影网站| 亚洲av无码偷拍在线观看| 亚洲av成人一区二区三区| 亚洲蜜芽在线精品一区| 18亚洲男同志videos网站| 午夜亚洲AV日韩AV无码大全| 亚洲一区二区成人| 亚洲成人网在线观看| 亚洲午夜精品在线| 亚洲狠狠成人综合网| 亚洲最大无码中文字幕| 亚洲av无码一区二区三区在线播放| 亚洲av中文无码乱人伦在线观看| 亚洲Aⅴ在线无码播放毛片一线天| 亚洲av无码一区二区三区天堂 | 亚洲深深色噜噜狠狠网站| youjizz亚洲| 亚洲精品美女久久7777777| 在线观看亚洲视频| 久久亚洲精品无码观看不卡| 亚洲精品无码永久中文字幕| 久久久亚洲精品无码| 亚洲国产精品乱码一区二区| 亚洲永久永久永久永久永久精品| 亚洲第一页在线视频| 中文字幕无码精品亚洲资源网久久| 亚洲JLZZJLZZ少妇| 亚洲人成网站在线观看青青| 国产精品亚洲A∨天堂不卡| 亚洲色图.com| 亚洲中文字幕无码中文| 日韩亚洲国产综合久久久| 国产成人亚洲精品狼色在线 | 国产亚洲精品自在久久|