在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

畢昇JDK 8 Dynamic CDS特性介紹

openEuler ? 來源:畢昇編譯 ? 作者:守兵、張一鵬 ? 2022-12-05 11:52 ? 次閱讀

1 背景

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

在 OpenJDK 社區(qū),CDS 技術(shù)發(fā)展有兩個(gè)演進(jìn)方向:

擴(kuò)大archive的類的范圍:CDS -> AppCDS -> Dynamic CDS。

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

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

繼續(xù)增加類共享的范圍,提升共享類技術(shù)的收益

簡(jiǎn)化使用 AppCDS 時(shí) dump classlist 的操作,直接在程序退出時(shí) dump 內(nèi)存中的類到 JSA 文件。

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

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

2 特性介紹

Java 應(yīng)用程序使用base JSA運(yùn)行,在程序執(zhí)行結(jié)束時(shí)對(duì)類進(jìn)行動(dòng)態(tài)歸檔生成top JSA,top JSA將包含base JSA以外所有可以共享的類(包含Custom ClassLoader加載的類),共享類范圍的擴(kuò)大提供了更短的啟動(dòng)時(shí)間,而且Dynamic CDS對(duì)于額外共享的類采用重定位(relocate)到一個(gè)更加緊湊的內(nèi)存空間以減少空間的浪費(fèi)。

base JSA:使用CDS/AppCDS生成的類共享文件,當(dāng)不指定其路徑時(shí),默認(rèn)為:$JAVA_HOME/jre/lib//server/classes.jsa。
top JSA:使用Dynamic CDS生成的類共享文件。

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

注:類數(shù)據(jù)區(qū)分為讀寫、只讀,分別放置在RW、RO區(qū)。

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

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

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

3 使用說明

3.1 相關(guān)參數(shù)說明

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

3.2 使用步驟

分為兩個(gè)步驟:

將可共享類的元數(shù)據(jù)(MetaData)dump 進(jìn)文件;

使用該文件執(zhí)行 Java 程序。

下面以 HelloWorld 程序?yàn)槔?jiǎn)單說明 Dynamic CDS 的用法。

預(yù)置條件:Java 程序 HelloWorld.class。

下面是每個(gè)步驟的命令行,相關(guān)參數(shù)說明請(qǐng)參見 JVM 參數(shù)說明。

步驟一:生成 top JSA(依賴 base JSA ),實(shí)驗(yàn)特性開關(guān)需要使能

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

如果因?yàn)槟承﹨?shù)改變,導(dǎo)致 JDK 包中帶的 default JSA 無法使用,請(qǐng)重新用 CDS/AppCDS 生成 base JSA。

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

可省略 -XX:SharedArchiveFile 參數(shù),此時(shí)默認(rèn)使用 -XX:SharedArchiveFile=$JAVA_HOME/jre/lib//server/classes.jsa 文件。

因?yàn)樯?JSA 過程中會(huì)修改運(yùn)行時(shí)數(shù)據(jù),無法保證運(yùn)行時(shí)正確,因此 dump top JSA 結(jié)束后直接退出進(jìn)程。

步驟二:使用 top JSA 運(yùn)行 Java 程序

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

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

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

3.3 使用限制

生成、使用JSA兩階段參數(shù)和環(huán)境PAGE_SIZE必須一致

restore階段使用參數(shù) -XX:ObjectAlignmentInBytes=32、16 時(shí),運(yùn)行時(shí)會(huì)報(bào)錯(cuò),信息如下:

ErroroccurredduringinitializationofVM
Unabletousesharedarchive.
Anerrorhasoccurredwhileprocessingthesharedarchivefile.
Thesharedarchivefile'sObjectAlignmentInBytesof8doesnotequalthecurrentObjectAlignmentInBytesof32.

錯(cuò)誤原因:因?yàn)樯?base JSA 時(shí),ObjectAlignmentInBytes 默認(rèn)為8,讀取時(shí)不支持指定其他對(duì)齊參數(shù)。

解決方法:重新使用 CDS/AppCDS 生成 base JSA 使用,生成時(shí)參數(shù)加入使用時(shí)對(duì)應(yīng)的 -XX:ObjectAlignmentInBytes 的值即可。

當(dāng)dump時(shí)的系統(tǒng)環(huán)境變量pagesize小于使用時(shí)的pagesize,運(yùn)行時(shí)會(huì)報(bào)錯(cuò),信息如下:

Anerrorhasoccurredwhileprocessingthesharedarchivefile.
UnabletomapReadOnlysharedspaceatrequiredaddress.
ErroroccurredduringinitializationofVM
Unabletousesharedarchive.

錯(cuò)誤原因:page_size 影響 JSA 文件中的數(shù)據(jù)對(duì)齊,系統(tǒng)無法為JSA文件恢復(fù)分配內(nèi)存。

解決方法:重新使用 CDS/AppCDS 在當(dāng)前環(huán)境生成 JSA 使用即可。

不支持關(guān)閉壓縮指針

使用 CDS(restore)階段使用參數(shù) -XX:-UseCompressedOops 或 -XX:-UseCompressedClassPointers 時(shí),運(yùn)行時(shí)會(huì)報(bào)錯(cuò),信息如下:

ErroroccurredduringinitializationofVM
Unabletousesharedarchive.:UseCompressedOopsandUseCompressedClassPointersmustbeonforUseSharedSpaces.
Classdatasharingisinconsistentwithotherspecifiedoptions.

錯(cuò)誤原因:目前 CDS 只支持壓縮指針場(chǎng)景。

解決方法:使用時(shí)應(yīng)當(dāng)開啟壓縮指針開關(guān),后續(xù)會(huì)支持壓縮指針關(guān)閉場(chǎng)景。

最大堆地址值需小于32G(當(dāng)使用默認(rèn)參數(shù) -XX:ObjectAlignmentInBytes=8)

使用 CDS(restore)階段使用參數(shù)和 (值 )的組合,運(yùn)行時(shí)會(huì)報(bào)錯(cuò),信息如下:

Anerrorhasoccurredwhileprocessingthesharedarchivefile.
Unabletoreservesharedspaceatrequiredaddress0x0000000800000000
ErroroccurredduringinitializationofVM
Unabletousesharedarchive.

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

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

Dynamic CDS 不支持的共享類

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

JVM anonymous class 不支持共享。

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

Dynamic CDS 不支持 JFR

JFR組件啟動(dòng)過程會(huì)通過 asm 動(dòng)態(tài)創(chuàng)建匿名類(anonymous class),與 Dynamic CDS 沖突。

4 性能測(cè)試

SpringBoot場(chǎng)景測(cè)試結(jié)果:

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

測(cè)試說明:

經(jīng)測(cè)試,使能 Dynamic CDS 特性相比于默認(rèn)參數(shù) java -jar spring-petclinic-2.5.0-SNAPSHOT.jar 啟動(dòng)效率會(huì)提升14.3%。

5 特性演進(jìn)

后續(xù)畢昇JDK8 CDS特性將支持壓縮指針關(guān)閉場(chǎng)景。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Dynamic
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    7553
  • JDK
    JDK
    +關(guān)注

    關(guān)注

    0

    文章

    82

    瀏覽量

    16637
  • cds
    cds
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    14454

原文標(biāo)題:畢昇JDK 8 Dynamic CDS 特性介紹

文章出處:【微信號(hào):openEulercommunity,微信公眾號(hào):openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于杯,求助

    大二電子新手 ,有意向參加明年4月的杯競(jìng)賽,不知道該做些什么作品,我會(huì)的也不多,沒什么好想法,各位好心人誰來給點(diǎn)提議啊 我現(xiàn)在在學(xué)習(xí)單片機(jī)和一些常用軟件:multisim,altium ,什么的 請(qǐng)問還應(yīng)該學(xué)習(xí)什么必要的知識(shí)呢?》多謝了
    發(fā)表于 11-15 22:21

    關(guān)于杯參賽選題

    本人研一,現(xiàn)在想和同學(xué)一起參加杯,可是不知道選什么題目,有高人給點(diǎn)建議吧
    發(fā)表于 12-04 17:10

    JDK 15安裝步驟及新特性

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

    JDK 8 Dynamic CDS 特性介紹

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

    IBM Informix Dynamic Server入門指

    IBM Informix Dynamic Server入門指南的主要內(nèi)容:介紹第1章 介紹Dynamic Server與Cllent產(chǎn)品第2章 使用
    發(fā)表于 08-01 15:36 ?14次下載

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

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

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

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

    JDK8JDK11首次同時(shí)發(fā)布兩個(gè)版本

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

    Fortran編譯器內(nèi)聯(lián)動(dòng)態(tài)庫函數(shù)str_copy

    Fortran編譯器是一款基于classic flang的高性能Fortran編譯器,支持Fortran編程語言的編譯和運(yùn)行,提供強(qiáng)大的數(shù)值計(jì)算和數(shù)據(jù)處理能力,在科學(xué)計(jì)算領(lǐng)域應(yīng)用前景廣闊。
    的頭像 發(fā)表于 09-21 11:35 ?1223次閱讀

    人工智能等領(lǐng)域涌現(xiàn)出多樣的異構(gòu)算力

    在開場(chǎng)致辭中提到,編譯器、JDK等產(chǎn)品為開發(fā)者提供全棧解決方案,實(shí)現(xiàn)性能競(jìng)爭(zhēng)力領(lǐng)先,釋放鯤鵬、
    的頭像 發(fā)表于 09-28 09:50 ?1000次閱讀

    JDK11升級(jí)JDK17最全實(shí)踐

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

    weblogic修改jdk路徑

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

    大模型應(yīng)用開發(fā)平臺(tái)+浪潮信息AIStation,讓大模型定制更簡(jiǎn)單

    北京2024年6月5日?/美通社/ -- 近日,大模型應(yīng)用開發(fā)平臺(tái)與浪潮信息AIStation智能業(yè)務(wù)生產(chǎn)創(chuàng)新平臺(tái)完成兼容性互認(rèn)證。基于和浪潮信息AIStation,用戶通過預(yù)
    的頭像 發(fā)表于 06-05 11:58 ?559次閱讀
    <b class='flag-5'>畢</b><b class='flag-5'>昇</b>大模型應(yīng)用開發(fā)平臺(tái)+浪潮信息AIStation,讓大模型定制更簡(jiǎn)單

    JDK11升級(jí)JDK17最全實(shí)踐干貨來了

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

    JDK8升級(jí)JDK11最全實(shí)踐干貨來了

    1、前言 截至目前(2023年),Java8發(fā)布至今已有9年,2018年9月25日,Oracle發(fā)布了Java11,這是Java8之后的首個(gè)LTS版本。那么從JDK8JDK11,到底
    的頭像 發(fā)表于 06-25 14:51 ?536次閱讀
    <b class='flag-5'>JDK8</b>升級(jí)<b class='flag-5'>JDK</b>11最全實(shí)踐干貨來了
    主站蜘蛛池模板: 中日韩精品视频在线观看 | 4hu影院最新地址www | 四虎永久在线观看免费网站网址 | 午夜视频入口 | 91成人免费福利网站在线 | 深爱开心激情网 | 一区二区三区久久 | 天天舔天天摸 | 欧美最猛性xxxx高清 | 亚洲天堂亚洲天堂 | 你懂的手机在线观看 | 亚洲爽爽网 | 香港三级理论在线观看网站 | 国产片一级特黄aa的大片 | 久久香蕉国产线看观看精品yw | 国产亚洲精品免费 | 欧美成人一区二区三区在线视频 | 色婷丁香 | 天天摸日日添狠狠添婷婷 | 老师喂我吃她的奶水脱她胸罩 | 一级做a爱免费观看视频 | 日本在线网址 | 亚洲欧美国产五月天综合 | 丁香八月婷婷 | 狠狠色狠狠色综合日日小蛇 | 亚洲人成在线精品不卡网 | 四虎永久在线观看视频精品 | 成人狠狠色综合 | 美女自熨出白浆视频在线播放 | 狠狠色综合久久久久尤物 | 婷婷色在线播放 | 色偷偷亚洲综合网亚洲 | 操日韩 | 91成人在线免费视频 | 免费又爽又黄的禁片1000部 | 伊人久久亚洲综合天堂 | 99pao强力打造免费高清色 | 视频在线观看免费播放www | 怡红院亚洲怡红院首页 | 成色视频| 丝袜美腿视频一区二区三区 |