chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

畢昇JDK8和JDK11首次同時發(fā)布兩個版本

openEuler ? 來源:openEuler ? 作者:openEuler ? 2021-10-28 10:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

2021 年 9 月 30 日,畢昇 JDK update Q3 版本正式發(fā)布,本次發(fā)布將包含 X86_64 版本。此前,畢昇 JDK 只發(fā)布 Aarch64 版本,這可能會對運(yùn)維產(chǎn)生一定的影響,例如需要根據(jù)架構(gòu)構(gòu)建多個版本以包含不同架構(gòu)的 JDK,此次畢昇 JDK 同時發(fā)布 X86_64 版本以及 Aarch64 版本,將極大的方便用戶進(jìn)行構(gòu)建,降低維護(hù)多個版本的開銷。另外,X86_64 版本和 Aarch64 版本共源,所以 X86_64 版本也包含此前畢昇 JDK 團(tuán)隊在 Aarch64 上的功能和大部分優(yōu)化,在功能和性能方面,兩者幾乎無差異。歡迎用戶安裝使用,為產(chǎn)品帶來核心競爭力。

此次版本在同步 OpenJDK 社區(qū) 8u302/11.0.12 的基礎(chǔ)上,還包含如下更新,為用戶提供高性能、可用于生產(chǎn)環(huán)境的 OpenJDK 發(fā)行版。

PS 優(yōu)化——Introduce UsePSRelaxedForwardee to enable using relaxed CAS in copy_to_survivor_space(畢昇 JDK8,畢昇 JDK11)

G1 GC 優(yōu)化——Parallel Full GC for G1(畢昇 JDK8)

提供鯤鵬硬件加速的 KAEProvider(畢昇 JDK11)

支持按進(jìn)程 id 和時間戳生成 jfr 文件(畢昇 JDK8,畢昇 JDK11)

Bug fixes

1 PS:introduce UsePSRelaxedForwardee to enable using relaxed CAS in copy_to_survivor_space(畢昇 JDK8,畢昇 JDK11)1.1 背景

在 JDK 中 Parallel Scavenge 是一個高吞吐量 GC,使用非常廣泛。在 specjbb 測試中,PSPromotionManager::copy_to_survivor_space 中的 CAS 指令 CPU 占比非常高,主要為 releasebarrier 導(dǎo)致,分析 PS 邏輯后,CAS 沒必要使用 memory barrier,使用 relaxed 可以提高弱內(nèi)存模型架構(gòu)上 PS 的性能。

1.2 實(shí)現(xiàn)原理

PS 的主要邏輯如下:

d9a8c0e4-3780-11ec-82a8-dac502259ad0.png

由上述流程圖可以看到,CAS Fail 的線程不會去讀 forwardee 內(nèi)容,因此在弱內(nèi)存模型的 CPU 架構(gòu)上,即使 copy obj 和 CAS 亂序,也不會影響 CAS Fail 線程的正確性。

關(guān)于 work steal 場景,其他線程 steal 到的 obj 能否看到其內(nèi)容,這個是由 CAS 成功的 push 操作保證的,由于 push 操作底層實(shí)現(xiàn)有 release 語義,所以無正確性問題。

da19726c-3780-11ec-82a8-dac502259ad0.png

da961bdc-3780-11ec-82a8-dac502259ad0.png

使用參數(shù):

UsePSRelaxedForwardee:試驗(yàn)特性開關(guān),默認(rèn)為 false,表示 PSPromotionManager::copy_to_survivor_space 中 CAS forwardee 使用 release 語義;打開則表示 CAS forwardee 的時候使用 relaxed(無任何 memory barrier),以在弱內(nèi)存模型 CPU 架構(gòu)上獲取更好性能。

1.3 性能測試

測試環(huán)境:

Architecture: aarch64

Byte Order: Little Endian

CPU(s): 128

On-line CPU(s) list: 0-127

Thread(s) per core: 1

Core(s) per socket: 64

Socket(s): 2

NUMA node(s): 4

Vendor ID: 0x48

Model: 0

Stepping: 0x1

BogoMIPS: 200.00

L1d cache: 64K

L1i cache: 64K

L2 cache: 512K

L3 cache: 65536K

NUMA node0 CPU(s): 0-31

NUMA node1 CPU(s): 32-63

NUMA node2 CPU(s): 64-95

NUMA node3 CPU(s): 96-127

使用 specjbb2015 進(jìn)行測試,除 UsePSRelaxedForwardee 開關(guān)以外的測試參數(shù)如下:

-Xms50g -Xmx50g -XX:+UseParallelGC -XX:ParallelGCThreads=24 -XX:+UseLargePages -XX:LargePageSizeInBytes=2m -XX:+UseBiasedLocking -XX:+AlwaysPreTouch -XX:-UseAdaptiveSizePolicy

測試結(jié)果:

db1f3912-3780-11ec-82a8-dac502259ad0.png

測試結(jié)果:從上圖可以看到,針對 SPECjbb 的 critical,畢昇 JDK8 可以提升 15%,畢昇 JDK11 可以提升 28%

2 Parallel Full GC for G1. (畢昇 JDK8)2.1 概述

G1 Full GC 是完全的 STW,在此期間應(yīng)用程序線程完全沒有機(jī)會運(yùn)行,長時間停頓會造成用戶明顯的感知。因此,使用 G1 過程中應(yīng)盡量避免的 Full GC 的出現(xiàn),如果出現(xiàn)最好能縮短其時間。當(dāng)前 JDK 8u 中 G1 Full GC 完全采用串行,包括:

各階段之間,包括標(biāo)記存活對象、計算目標(biāo)對象的位置、更新引用的位置、移動對象完成壓縮階段;

每個階段內(nèi);

完全的串行導(dǎo)致即使是在多核機(jī)器上也無法利用機(jī)器的強(qiáng)大性能縮短 Full GC 的(停頓)時間。

由于 G1 Full GC 基本算法的約束,雖然上面提到的四個階段之間無法并行化,但是各個階段內(nèi)卻可以通過優(yōu)化算法做到一定并行化,以達(dá)到縮短整體停頓時間的效果。本特性會將計算目標(biāo)對象的位置、更新引用的位置、移動對象完成壓縮三個階段盡量做到階段內(nèi)的并行化。(標(biāo)記存活對象階段的并行化后續(xù)也會支持)

開啟本特性后,可以明顯降低 G1 Full GC 的平均停頓時間。本特性屬于通用特性,適用于 Aarch64、X86 平臺。

2.2 實(shí)現(xiàn)原理

2.2.1 并行 Full GC 基本算法

如下列出了并行 Full GC 算法與串行 Full GC 算法的主要差異點(diǎn):

將整個堆分成不同的 heap region set 交給各個 GC 線程分別處理,盡量減少 GC 線程間同步、競爭;

G1 Full GC 現(xiàn)有實(shí)現(xiàn)是將整個堆向一個方向(目標(biāo)地址)壓縮;要做到并行化,并減少并行 GC 線程間的交互、競爭,有效的方式是每個 GC 線程有自己壓縮的方向(目標(biāo)地址)。

大對象的特殊處理:在計算目標(biāo)對象位置并行階段結(jié)束后,才能釋放 free 的 humongous region;

2.2.2 計算目標(biāo)對象位置階段的并行化

計算目標(biāo)對象位置階段主要負(fù)責(zé)

根據(jù)標(biāo)記信息設(shè)置對象的 forwardee。

釋放沒有被標(biāo)記的 humongous regions。

Forwardee 的設(shè)置需要預(yù)先知道目標(biāo)地址,該目標(biāo)地址是通過 Compaction Point 維護(hù)著。在遍歷 heap region 時每當(dāng)發(fā)現(xiàn)一個新的標(biāo)記的對象,就將 Compaction Point 里記錄的目標(biāo)地址設(shè)置為該對象的 forwardee,然后再將 Compaction Point 里記錄的目標(biāo)地址加上對象的大小,作為下次 forwardee 設(shè)置的值。如此往復(fù),直至每一個標(biāo)記的對象都被 forwarded。

并行地設(shè)置對象的 Forwardee 是通過 1)隔離各個 GC 線程的遍歷的 heap region,2)隔離各個 GC 線程要為 forwardee 設(shè)置的目標(biāo)地址來達(dá)成的。具體實(shí)現(xiàn)是,1)通過標(biāo)記 region 來隔離各個 GC 線程遍歷的 heap regions,2)通過為每個 GC 線程維護(hù)一個 Compaction Point 來隔離 forwardee 的設(shè)置??梢岳斫鉃閷⒄麄€ heap 被分成了 N 份(GC 線程個數(shù)為 N),每一份由一個 GC 線程負(fù)責(zé),各個線程盡量互不干擾地工作。

除此之外,每個 GC 線程的 Compaction Point 還負(fù)責(zé)收集屬于該 GC 線程的 regions、humongous regions,以便后續(xù)(壓縮階段)處理。

Free 的大對象在計算目標(biāo)對象位置階段就會被釋放。由于大對象的特殊性(可能包括多個 heap region)加之多個 GC 線程在同時工作,需要對其進(jìn)行一些特殊處理:如,在計算目標(biāo)對象位置并行階段結(jié)束后,才能釋放 free 的 humongous region,以避免多個 GC 線程訪問同一個大對象的不同 region 時可能面臨的數(shù)據(jù)不一致問題。

2.2.3 更新引用位置階段的并行化

更新引用位置階段主要負(fù)責(zé)根據(jù)對象的 forwardee 信息更新所有引用。

此階段的并行化比較簡單,因?yàn)樾枰乃行畔⒍贾辉趯ο箢^中(forwardee),并行化和串行化的算法差別很小,不同點(diǎn)只是每個 GC 線程要標(biāo)記屬于自己處理范圍的 heap region。

2.2.4 移動對象完成壓縮階段的并行化

移動對象完成壓縮階段主要負(fù)責(zé)根據(jù)對象的 forwardee 信息進(jìn)行壓縮。

每個 GC 線程都有屬于自己的 Compaction Point,在計算目標(biāo)對象位置階段 Compaction Point 中收集了需要該 GC 線程壓縮的 region 的集合。對于單個 GC 線程來說,整個過程與串行差別不大,只是需要從自己的 Compaction Point 中取出 regions,進(jìn)行壓縮。

使用參數(shù):

本特性需要通過 VM option -XX:+G1ParallelFullGC 顯示打開,默認(rèn)為關(guān)閉。

注意,本特性會帶來如下 JVM 停頓時間上的收益:

降低單次 G1 Full GC 的停頓時間;

降低總的 G1 Full GC 的停頓時間;

但是,有可能會增加 G1 Full GC 的頻率。所以,當(dāng)降低 JVM 的停頓時間是應(yīng)用程序的性能調(diào)優(yōu)目標(biāo)之一時,且 G1 Full GC 是停頓原因之一時,適用于打開 G1ParallelFullGC VM Option,降低單次平均、總的停頓時間。

2.3 性能測試

測試套:Dacapo

測試參數(shù):

JVM:-Xmx1g -Xms1g -XX:ParallelGCThreads=$N

Dacapo:-t 4 --iterations 5 --size huge --no-pre-iteration-gc h2

下面分別給出了并行 GC 線程數(shù)量分別為 4、16 時 Full GC 停頓時間的數(shù)據(jù)

N == 4

N == 16

測試結(jié)果:受益(STW 時間減少)基本在 16%~40%。

3 提供鯤鵬硬件加速的 KAEProvider(畢昇 JDK11)該特性已在早期的畢昇 JDK 8u282 中支持,詳見2021 年畢昇 JDK 的第一個重要更新來了,并在 8u292 版本中對其功能進(jìn)行完善,詳見畢昇 JDK 8u292、11.0.11 發(fā)布!, 此次將在畢昇 JDK11 中對該特性進(jìn)行支持。

3.1 實(shí)現(xiàn)原理和性能測試

實(shí)現(xiàn)原理和性能測試請參考鯤鵬硬件加解密特性詳解。 但由于 JDK11 引入了模塊系統(tǒng),因此用戶使用時需要將 KAEProvider 所在的模塊(jdk.crypto.kaeprovider)進(jìn)行導(dǎo)出,如下為畢昇 JDK11 中 KAEProvider 相關(guān)的文件:

ddbf7af6-3780-11ec-82a8-dac502259ad0.png

具體導(dǎo)出命令可參考如下格式:

編譯:javac --add-modules jdk.crypto.kaeprovider --add-exports=jdk.crypto.kaeprovider/org.openeuler.security.openssl=ALL-UNNAMED DHTest.java

運(yùn)行:java --add-modules jdk.crypto.kaeprovider --add-exports=jdk.crypto.kaeprovider/org.openeuler.security.openssl=ALL-UNNAMED DHTest

4 支持按進(jìn)程 id 和時間戳生成 jfr 文件(畢昇 JDK8,畢昇 JDK11)4.1 說明

該特性用來擴(kuò)展 JFR 文件名,支持在文件名中加入進(jìn)程號或時間戳或兩者都加,當(dāng)用戶在環(huán)境上生成多個 jfr 文件時,該特性可以幫助用戶根據(jù)需要快速定位到所需的文件。

4.2 功能測試

未合入此特性:

java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=10s,filename=myrecording%t.jfr While

de499916-3780-11ec-82a8-dac502259ad0.png

合入此特性:

java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=10s,filename=myrecording%t.jfr While

dec45660-3780-11ec-82a8-dac502259ad0.png

5 Bug fixes除了上面介紹的一些特性外,畢昇 JDK 還合入了社區(qū)高版本中的一些 bug fix 和優(yōu)化的 patch,為用戶提供穩(wěn)定、高性能的畢昇 JDK。具體回合 patch 如下:

JDK8

8197387:jcmd started by “root” must be allowed to access all VM processes 允許通過 root 啟動的 jcmd 訪問環(huán)境上任意的 JVM 進(jìn)程,默認(rèn)情況下,進(jìn)程只能被啟動該進(jìn)程的用戶通過 jcmd 訪問。

8069191:moving predicate out of loops may cause array accesses to bypass null check 修復(fù) c2 在 aarch64 上可能會 crash 的 bug

8167014: jdeps: Missing message: warn.skipped.entry 該修復(fù)可以解決通過 jdeps 解析特定的 jar 包出現(xiàn)的 Missing message: warn.skipped.entry 錯誤

8268453: sun/security/pkcs12/EmptyPassword.java fails with Sequence tag error 該修復(fù)可以解決當(dāng)對密碼為空的 KeyStore 進(jìn)行解析時,可能會出現(xiàn)的 java.io.IOException: Sequence tag error 問題

8202142:jfr/event/io/TestInstrumentation is unstable JDK 自帶用例修復(fù)

8143251:HeapRetentionTest.java Test is failing on jdk9/dev 該修復(fù)可以解決 G1 GC 在特定場景下導(dǎo)致進(jìn)程假死的問題

8183543:Aarch64: C2 compilation often fails with “failed spill-split-recycle sanity check” 修復(fù) C2 編譯器在某些場景下編譯方法時報failed spill-split-recycle sanity check錯誤,導(dǎo)致方法被解釋執(zhí)行,進(jìn)而造成應(yīng)用程序性能下降的問題

JDK11

8268427: Improve AlgorithmConstraints:checkAlgorithm performance 該 patch 可以提升 TLS 的握手性能

8257145: Performance regressionwith -XX:-ResizePLABafter JDK-8079555 該 patch 可以修復(fù)使用 G1 GC 后,HBase 性能下降的問題,詳細(xì)原理可參考畢昇 JDK 以前的文章JDK 從 8 升級到 11,使用 G1 GC,HBase 性能下降近 20%。JDK 到底干了什么?

8247691:[aarch64] Incorrect handling of VM exceptions in C1 deopt stub/traps 該修復(fù)可以解決 C1 編譯器生成指令過程中使用錯誤的寄存器,進(jìn)而導(dǎo)致進(jìn)程 Crash 的問題

編輯:jq

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

    關(guān)注

    0

    文章

    160

    瀏覽量

    12629
  • CAS
    CAS
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

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

    關(guān)注

    0

    文章

    83

    瀏覽量

    16893

原文標(biāo)題:畢昇JDK8和JDK11首次同時發(fā)布Aarch64和X86_64兩個版本

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    JDK8升級到21的問題集

    一、背景與挑戰(zhàn) 1. 升級動因 ?Oracle長期支持策略 ?現(xiàn)代特性需求:協(xié)程、模式匹配、ZGC等 ?安全性與性能的需求 ?AI新技術(shù)引入的版本要求 2. 項(xiàng)目情況 ?100+項(xiàng)目并行升級
    的頭像 發(fā)表于 06-06 16:49 ?254次閱讀

    CY4500 PD軟件在Mac上無法正常工作怎么解決?

    濟(jì)于事。 我附上了一張屏幕截圖。 我正在使用 M1 macBook Pro,macOS 13.5.2。 我之前發(fā)布了有關(guān)該軟件根本沒有啟動的信息,并被告知要安裝 JAVA 8。 我編輯了程序
    發(fā)表于 05-28 07:02

    請問imx8mp的LVDS0和LVDS1接口是否可以同時兩個屏幕上工作?

    請問 imx8mp 的 LVDS0 和 LVDS1 接口是否可以同時兩個屏幕上工作? 你有什么例子嗎?
    發(fā)表于 04-14 06:11

    keil不同版本,有的文件在新版本上報錯怎么辦?要裝兩個版本一起用?

    有的文件在新版本上報錯怎么辦?要裝兩個版本一起用?
    發(fā)表于 03-10 07:05

    DeepSeek V3思MindSpore版本上線開源社區(qū)

    近日,基于騰AI硬件與思MindSpore AI框架版本的DeepSeek-V3完成開發(fā)支持并上線思開源社區(qū),面向開發(fā)者提供開箱即用的預(yù)訓(xùn)練和推理能力,并已成功在大規(guī)模集群上預(yù)訓(xùn)
    的頭像 發(fā)表于 02-18 10:12 ?1194次閱讀
    DeepSeek V3<b class='flag-5'>昇</b>思MindSpore<b class='flag-5'>版本</b>上線開源社區(qū)

    蘋果為iPhone 11系列重新發(fā)布iOS 18.3版本更新

    蘋果公司針對 iPhone 11、iPhone 11 Pro 以及 iPhone 11 Pro Max,重新發(fā)布了 iOS 18.3 版本
    的頭像 發(fā)表于 02-05 16:31 ?1941次閱讀

    ADC124S021同時使用兩個通道,兩個通道的轉(zhuǎn)換數(shù)據(jù)發(fā)生串?dāng)_怎么解決?

    用DSP的SPI接口接ADC124S021,如果只是進(jìn)行單通道的信號采集,則轉(zhuǎn)換后的數(shù)值穩(wěn)定,但是同時使用兩個通道時則兩個通道的數(shù)據(jù)發(fā)生串?dāng)_現(xiàn)象。如,我單獨(dú)使用2通道,則轉(zhuǎn)換后數(shù)值穩(wěn)定,但是如果
    發(fā)表于 12-30 07:41

    Tomcat開放源代碼的Web應(yīng)用服務(wù)器

    ?Tomcat 先安裝前置JDK [root@localhost ~]#rpm -ivh jdk-8u201-linux-x64.rpm#安裝JDK包警告:jdk-8u201-lin
    的頭像 發(fā)表于 12-23 11:24 ?618次閱讀
    Tomcat開放源代碼的Web應(yīng)用服務(wù)器

    Java集合API的改進(jìn)介紹

    解答這些問題。 我們將逐步學(xué)習(xí) Java 集合類的優(yōu)化過程,并按版本逐一對比分析。主要討論的焦點(diǎn)將包括 JDK 1.0、1.2、1.4、1.5、1.6、1.8、9、10、11 和 21 版本
    的頭像 發(fā)表于 11-22 11:12 ?567次閱讀
    Java集合API的改進(jìn)介紹

    TPA3112D1兩個同時使用時,輸出斷續(xù)怎么解決?

    TPA3112D1兩個同時使用時,輸出斷續(xù),單個使用沒問題 兩個一樣的電路 共電源 共地 左右聲道輸入 經(jīng)過多次調(diào)試后大概原因在輸出端,只要把其中一芯片的
    發(fā)表于 09-11 07:03

    ad如何設(shè)置兩個元器件的距離

    在Altium Designer(簡稱AD)中設(shè)置兩個元器件之間的距離,主要是通過設(shè)置元器件間的安全間距(Clearance)規(guī)則來實(shí)現(xiàn)的。這個規(guī)則定義了元器件之間、元器件與走線之間以及其他設(shè)計元素
    的頭像 發(fā)表于 09-02 15:31 ?1.7w次閱讀

    觸發(fā)器的兩個穩(wěn)定狀態(tài)分別是什么

    觸發(fā)器作為數(shù)字電路中的基本邏輯單元,具有兩個穩(wěn)定狀態(tài),這兩個狀態(tài)通常用于表示二進(jìn)制數(shù)碼中的0和1。
    的頭像 發(fā)表于 08-12 11:01 ?3080次閱讀

    雙穩(wěn)態(tài)電路的兩個穩(wěn)定狀態(tài)是什么

    雙穩(wěn)態(tài)電路是一種具有兩個穩(wěn)定狀態(tài)的電子電路,廣泛應(yīng)用于數(shù)字電路、通信系統(tǒng)、存儲器等領(lǐng)域。 雙穩(wěn)態(tài)電路的基本概念 雙穩(wěn)態(tài)電路是一種具有兩個穩(wěn)定狀態(tài)的電路,即在沒有外部輸入信號的情況下,電路可以保持在
    的頭像 發(fā)表于 08-11 15:00 ?2657次閱讀

    雙穩(wěn)態(tài)觸發(fā)器的兩個基本性質(zhì)是什么

    雙穩(wěn)態(tài)觸發(fā)器(Bistable Trigger)是一種具有兩個穩(wěn)定狀態(tài)的邏輯電路,廣泛應(yīng)用于數(shù)字電路設(shè)計中。它具有兩個基本性質(zhì):記憶性和切換性。 一、雙穩(wěn)態(tài)觸發(fā)器的基本概念 1.1 雙穩(wěn)態(tài)觸發(fā)器
    的頭像 發(fā)表于 08-11 10:08 ?1394次閱讀

    Java CompletableFuture 異步超時實(shí)現(xiàn)探索

    簡介 JDK 8 中 CompletableFuture 沒有超時中斷任務(wù)的能力。現(xiàn)有做法強(qiáng)依賴任務(wù)自身的超時實(shí)現(xiàn)。本文提出一種異步超時實(shí)現(xiàn)方案,解決上述問題。 前言 JDK 8 是一
    的頭像 發(fā)表于 07-25 14:06 ?670次閱讀