国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

畢昇JDK 8 Dynamic CDS特性介紹

openEuler ? 來源:畢昇編譯 ? 作者:守兵、張一鵬 ? 2022-12-05 11:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 背景

JDK 5 中引入的 Class-Data Sharing (CDS) 技術允許將一組類預處理為共享存檔文件,然后可以在運行時進行內存映射以減少啟動時間。當多個 JVM 共享同一個歸檔文件時,它還可以減少內存占用。

在 OpenJDK 社區,CDS 技術發展有兩個演進方向:

擴大archive的類的范圍:CDS -> AppCDS -> Dynamic CDS。

擴大archive的數據種類:metadata(CDS、AppCDS、Dynamic AppCDS) -> 基本類對象 -> strings -> module -> Support for pre-generated java.lang.invoke classes in CDS archive。

Dynamic CDS特性(JEP 350: Dynamic CDS Archives[1])主要功能:

繼續增加類共享的范圍,提升共享類技術的收益

簡化使用 AppCDS 時 dump classlist 的操作,直接在程序退出時 dump 內存中的類到 JSA 文件。

畢昇JDK 8 中實現的 Dynamic CDS 特性相比之前的 AppCDS ,增加了 Custom ClassLoader 的支持,擴展了共享類的支持范圍;且該JDK版本帶有基本類的 base JSA 文件,可以消除 dump classlist 的步驟,提高該特性的易用性。經測試,在使用此特性的情況下 SpringBoot 啟動時間具有顯著提升。

注:JEP 350 中 Dynamic CDS 增加支持的類(lambda、匿名類),畢昇JDK 8 暫時沒有實現。

2 特性介紹

Java 應用程序使用base JSA運行,在程序執行結束時對類進行動態歸檔生成top JSA,top JSA將包含base JSA以外所有可以共享的類(包含Custom ClassLoader加載的類),共享類范圍的擴大提供了更短的啟動時間,而且Dynamic CDS對于額外共享的類采用重定位(relocate)到一個更加緊湊的內存空間以減少空間的浪費。

base JSA:使用CDS/AppCDS生成的類共享文件,當不指定其路徑時,默認為:$JAVA_HOME/jre/lib//server/classes.jsa。
top JSA:使用Dynamic CDS生成的類共享文件。

a5f1887c-723e-11ed-8abf-dac502259ad0.png

注:類數據區分為讀寫、只讀,分別放置在RW、RO區。

此特性可以使用default JSA(JDK包中自帶的基本類的JSA文件)作為base JSA,因此可以簡化CDS特性使用步驟,生成top JSA后,運行程序時則同時將base JSA、top JSA映射到內存中以加速啟動和節省內存。

a6174b98-723e-11ed-8abf-dac502259ad0.png

此特性為保證Customer ClassLoader加載類的正確性,與AppClassLoader、ExtClassLoader在FindLoadedClass時直接由classLoader來查找共享類不同,其在DefineClass中的基本校驗完畢后查詢共享類。

3 使用說明

3.1 相關參數說明

分類 選項 含義
運行時選項 -Xshare:on 該參數繼承 CDS,使用共享文件
-XX:+UnlockExperimentalVMOptions 開啟實驗特性
-XX:SharedArchiveFile 用于用戶首次啟動時指定 base JSA 文件,其是生成 top JSA 的基礎
-XX:ArchiveClassesAtExit 用戶指定進程退出時生成 top JSA 文件路徑。文件名支持按照進程號 %p 輸出,可避免多JVM進程復寫一份 top JSA,導致 top JSA 不可用
日志開關 -XX:InfoDynamicCDS 打開級別為 info 的日志,可以通過 -XX:DynamicCDSLog=PATH 設置輸出路徑,默認為標準輸出流
-XX:DebugDynamicCDS 打開級別為 debug 的日志,其余同上
-XX:TraceDynamicCDS 打開級別為 trace 的日志,其余同上

3.2 使用步驟

分為兩個步驟:

將可共享類的元數據(MetaData)dump 進文件;

使用該文件執行 Java 程序。

下面以 HelloWorld 程序為例簡單說明 Dynamic CDS 的用法。

預置條件:Java 程序 HelloWorld.class。

下面是每個步驟的命令行,相關參數說明請參見 JVM 參數說明。

步驟一:生成 top JSA(依賴 base JSA ),實驗特性開關需要使能

java-XX:+UnlockExperimentalVMOptions-Xshare:on-XX:ArchiveClassesAtExit=top.jsa-XX:+InfoDynamicCDSHelloWorld

如果因為某些參數改變,導致 JDK 包中帶的 default JSA 無法使用,請重新用 CDS/AppCDS 生成 base JSA。

非正常結束的進程,比如 kill -9 殺死進程,則無法生成 JSA,則需要通過 jcmd GC.dynamic_cds_dump 命令在進程結束之前生成。

可省略 -XX:SharedArchiveFile 參數,此時默認使用 -XX:SharedArchiveFile=$JAVA_HOME/jre/lib//server/classes.jsa 文件。

因為生成 JSA 過程中會修改運行時數據,無法保證運行時正確,因此 dump top JSA 結束后直接退出進程。

步驟二:使用 top JSA 運行 Java 程序

java-XX:+UnlockExperimentalVMOptions-Xshare:on-XX:ArchiveClassesAtExit=top.jsa-XX:+InfoDynamicCDSHelloWorld

top JSA 中記錄了 base JSA 的路徑,可以在參數中只指明 top JSA 。如果 base JSA 路徑在 top JSA 生成之后發生了改變,需要同時指明 base、top JSA 的路徑:

java-Xshare:on-XX:SharedArchiveFile=base.jsa:top.jsa-XX:+InfoDynamicCDSHelloWorld

3.3 使用限制

生成、使用JSA兩階段參數和環境PAGE_SIZE必須一致

restore階段使用參數 -XX:ObjectAlignmentInBytes=32、16 時,運行時會報錯,信息如下:

ErroroccurredduringinitializationofVM
Unabletousesharedarchive.
Anerrorhasoccurredwhileprocessingthesharedarchivefile.
Thesharedarchivefile'sObjectAlignmentInBytesof8doesnotequalthecurrentObjectAlignmentInBytesof32.

錯誤原因:因為生成 base JSA 時,ObjectAlignmentInBytes 默認為8,讀取時不支持指定其他對齊參數。

解決方法:重新使用 CDS/AppCDS 生成 base JSA 使用,生成時參數加入使用時對應的 -XX:ObjectAlignmentInBytes 的值即可。

當dump時的系統環境變量pagesize小于使用時的pagesize,運行時會報錯,信息如下:

Anerrorhasoccurredwhileprocessingthesharedarchivefile.
UnabletomapReadOnlysharedspaceatrequiredaddress.
ErroroccurredduringinitializationofVM
Unabletousesharedarchive.

錯誤原因:page_size 影響 JSA 文件中的數據對齊,系統無法為JSA文件恢復分配內存。

解決方法:重新使用 CDS/AppCDS 在當前環境生成 JSA 使用即可。

不支持關閉壓縮指針

使用 CDS(restore)階段使用參數 -XX:-UseCompressedOops 或 -XX:-UseCompressedClassPointers 時,運行時會報錯,信息如下:

ErroroccurredduringinitializationofVM
Unabletousesharedarchive.:UseCompressedOopsandUseCompressedClassPointersmustbeonforUseSharedSpaces.
Classdatasharingisinconsistentwithotherspecifiedoptions.

錯誤原因:目前 CDS 只支持壓縮指針場景。

解決方法:使用時應當開啟壓縮指針開關,后續會支持壓縮指針關閉場景。

最大堆地址值需小于32G(當使用默認參數 -XX:ObjectAlignmentInBytes=8)

使用 CDS(restore)階段使用參數和 (值 )的組合,運行時會報錯,信息如下:

Anerrorhasoccurredwhileprocessingthesharedarchivefile.
Unabletoreservesharedspaceatrequiredaddress0x0000000800000000
ErroroccurredduringinitializationofVM
Unabletousesharedarchive.

錯誤原因:JSA 文件的映射地址的堆區間,不能被參數所指定的JVM 其他組件占用。

解決方法:將此組合值 改為小于 32 可正常運行。

Dynamic CDS 不支持的共享類

Java version1.5 以及之前的類不支持共享。

JVM anonymous class 不支持共享。

如果基類不支持共享,則該類也不支持共享。

Dynamic CDS 不支持 JFR

JFR組件啟動過程會通過 asm 動態創建匿名類(anonymous class),與 Dynamic CDS 沖突。

4 性能測試

SpringBoot場景測試結果:

a627be88-723e-11ed-8abf-dac502259ad0.png

測試說明:

經測試,使能 Dynamic CDS 特性相比于默認參數 java -jar spring-petclinic-2.5.0-SNAPSHOT.jar 啟動效率會提升14.3%。

5 特性演進

后續畢昇JDK8 CDS特性將支持壓縮指針關閉場景。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Dynamic
    +關注

    關注

    0

    文章

    5

    瀏覽量

    7765
  • JDK
    JDK
    +關注

    關注

    0

    文章

    83

    瀏覽量

    17145
  • cds
    cds
    +關注

    關注

    0

    文章

    16

    瀏覽量

    14702

原文標題:畢昇JDK 8 Dynamic CDS 特性介紹

文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    德州儀器Dynamic Z-Track算法的特性和優勢

    本應用手冊介紹了德州儀器 (TI) 電池電量監測算法的簡短歷史,說明了負載電流頻繁、快速變化時電池電量監測計運行時的挑戰,并詳細介紹了應用于動態負載電流應用的 Dynamic Z-Track (IT-DZT) 算法的
    的頭像 發表于 09-20 11:39 ?3168次閱讀
    德州儀器<b class='flag-5'>Dynamic</b> Z-Track算法的<b class='flag-5'>特性</b>和優勢

    關于杯,求助

    大二電子新手 ,有意向參加明年4月的杯競賽,不知道該做些什么作品,我會的也不多,沒什么好想法,各位好心人誰來給點提議啊 我現在在學習單片機和一些常用軟件:multisim,altium ,什么的 請問還應該學習什么必要的知識呢?》多謝了
    發表于 11-15 22:21

    關于杯參賽選題

    本人研一,現在想和同學一起參加杯,可是不知道選什么題目,有高人給點建議吧
    發表于 12-04 17:10

    JDK 15安裝步驟及新特性

    。  JDK 15 新特性說明  JDK 15 為用戶提供了14項主要的增強/更改,包括一個孵化器模塊,三個預覽功能,兩個不推薦使用的功能以及兩個刪除功能。  1. EdDSA 數字簽名算法  新加入
    發表于 12-23 17:36

    JDK 8 Dynamic CDS 特性介紹

    Dynamic CDS 增加支持的類(lambda、匿名類),JDK 8 暫時沒有實現
    發表于 12-23 16:19

    什么是cds?CDS是什么意思?

    什么是cds?CDS是什么意思? CDS是相關雙取樣電路(Correlated Double Sampling), CCD傳感器的每個像素的輸出波形只在一部分時間內是圖像信號,
    發表于 09-02 11:35 ?5.9w次閱讀

    如何解決JDK8小版本升級后性能下降的問題

    編者按:在升級 JDK8U 的小版本后(從 8u74 升級到 8u202),遇到性能劇烈下降的問題(性能下降 13 倍)。該應用是一個非常簡單的 Web 應用,且應用在 JDK 升級前
    的頭像 發表于 07-26 14:44 ?5272次閱讀
    如何解決<b class='flag-5'>JDK8</b>小版本升級后性能下降的問題

    JDK8JDK11首次同時發布兩個版本

    2021 年 9 月 30 日, JDK update Q3 版本正式發布,本次發布將包含 X86_64 版本。此前,
    的頭像 發表于 10-28 10:53 ?4403次閱讀
    <b class='flag-5'>畢</b><b class='flag-5'>昇</b><b class='flag-5'>JDK8</b>和<b class='flag-5'>JDK</b>11首次同時發布兩個版本

    Fortran編譯器內聯動態庫函數str_copy

    Fortran編譯器是一款基于classic flang的高性能Fortran編譯器,支持Fortran編程語言的編譯和運行,提供強大的數值計算和數據處理能力,在科學計算領域應用前景廣闊。
    的頭像 發表于 09-21 11:35 ?1948次閱讀

    人工智能等領域涌現出多樣的異構算力

    在開場致辭中提到,編譯器、JDK等產品為開發者提供全棧解決方案,實現性能競爭力領先,釋放鯤鵬、
    的頭像 發表于 09-28 09:50 ?1771次閱讀

    JDK11升級JDK17最全實踐

    2021年9月14日,Oracle發布了可以長期支持的JDK17版本,那么從JDK11到JDK17,到底帶來了哪些特性呢?亞毫秒級的ZGC效果到底怎么樣呢?值得我們升級嗎?而且升級過程
    的頭像 發表于 11-17 10:36 ?2718次閱讀
    <b class='flag-5'>JDK</b>11升級<b class='flag-5'>JDK</b>17最全實踐

    weblogic修改jdk路徑

    )路徑的情況。本文將詳細介紹如何在WebLogic中修改JDK路徑。 一、背景介紹 Java Development Kit(JDK)是Java開發人員必備的工具包,用于編譯、運行和調
    的頭像 發表于 12-05 14:46 ?2389次閱讀

    大模型應用開發平臺+浪潮信息AIStation,讓大模型定制更簡單

    北京2024年6月5日?/美通社/ -- 近日,大模型應用開發平臺與浪潮信息AIStation智能業務生產創新平臺完成兼容性互認證。基于和浪潮信息AIStation,用戶通過預
    的頭像 發表于 06-05 11:58 ?1289次閱讀
    <b class='flag-5'>畢</b><b class='flag-5'>昇</b>大模型應用開發平臺+浪潮信息AIStation,讓大模型定制更簡單

    JDK11升級JDK17最全實踐干貨來了

    1、前言 如果你仍在使用JDK8,那你是否曾經遇到過OutOfMemoryError的問題?你是否曾經為JVM的調優問題感到困擾?本篇文章將為你介紹一種能夠提供百倍性能提升的垃圾回收器,也許能夠
    的頭像 發表于 06-25 14:50 ?1889次閱讀
    <b class='flag-5'>JDK</b>11升級<b class='flag-5'>JDK</b>17最全實踐干貨來了

    JDK8升級JDK11最全實踐干貨來了

    1、前言 截至目前(2023年),Java8發布至今已有9年,2018年9月25日,Oracle發布了Java11,這是Java8之后的首個LTS版本。那么從JDK8JDK11,到底
    的頭像 發表于 06-25 14:51 ?1438次閱讀
    <b class='flag-5'>JDK8</b>升級<b class='flag-5'>JDK</b>11最全實踐干貨來了