91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

G1調(diào)優(yōu)時(shí)可調(diào)整的參數(shù)

科技綠洲 ? 來(lái)源:了不起 ? 作者:了不起 ? 2023-09-25 14:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近線上服務(wù)運(yùn)行比較緩慢,老大提出讓我進(jìn)行JVM優(yōu)化。GC的內(nèi)容很多,也不可能一時(shí)間全部都掌握,今天就要看看G1的一些知識(shí),還有調(diào)優(yōu)時(shí)可調(diào)整的參數(shù)。

1.G1簡(jiǎn)介

G1的全稱為 Garbage First Garbage Collector, 是一款內(nèi)置在HotSpot JVM中的服務(wù)端垃圾收集器。

G1是作為CMS的替代產(chǎn)品出現(xiàn)的,其目標(biāo)是在滿足最短時(shí)間停頓的同時(shí)達(dá)到一個(gè)高吞吐量,適用于多核處理器,大內(nèi)存容量的系統(tǒng)。

其特點(diǎn)如下:

  • 短停頓時(shí)間且可控。對(duì)內(nèi)存進(jìn)行分區(qū),可以應(yīng)用在大內(nèi)存系統(tǒng)中,其使用了基于內(nèi)存的新生代收集和混合收集。
  • 高吞吐量。設(shè)計(jì)了新的并發(fā)標(biāo)記線程,并發(fā)處理分區(qū)之間的引用關(guān)系,加快垃圾回收速度。

1.1分區(qū)

G1垃圾回收器將堆內(nèi)存劃分成固定大小的Region,下圖為G1內(nèi)存的分配示意圖,其中灰色格子代表一個(gè)region。

圖片

其中G1的分區(qū)可以分為4類:

  1. 自由分區(qū)(Free Heap Region, FHR)
  2. 新生代分區(qū)(Young Heap Region , YHR) 新生代也分為Eden 和Survivor區(qū)
  3. 大對(duì)象分區(qū)(Humongous Heap Region,HHR) 大對(duì)象區(qū)可分為 大對(duì)象頭分區(qū)和大對(duì)象連續(xù)分區(qū),大對(duì)象一般占Region的一半以上。
  4. 老生代分區(qū)(Old Heap Region,OHR)

圖片
img

Region可以在1MB~32MB,且為2的N次冪,設(shè)定分區(qū)大小有以下方法:

  • 可以通過(guò)-XX:G1HeapRegionSize=<>來(lái)指定大小,默認(rèn)為0.
  • 默認(rèn)情況下是將整個(gè)堆分為2048個(gè)Region。
1.1.1 新生代大小

新生代大小的設(shè)置如下:

  • 如果設(shè)置了最大值 (MaxNewSize) 和最小值(NewSize), Xmn 等價(jià)于MaxNewSize
  • 如果設(shè)置了最大值和最小值,又設(shè)置了NewRatio 則忽略NewRatio
  • 如果沒(méi)有設(shè)置新生代最大值和最小值,但是設(shè)置了NewRatio 則新生代的最大值最小值是相同的,都是整個(gè)堆空間的 (NewRatio+1)
  • 如果沒(méi)有設(shè)置新生代最大值和最小值,或者只設(shè)置了最大值或者最小值中的一個(gè),那么G1將根據(jù)參數(shù)G1MaxNewSizePrecent(默認(rèn)值60) 和 G1NewSizePercent (默認(rèn)值5)占整個(gè)堆空間的比例計(jì)算最大值和最小值。

關(guān)于堆大小的參數(shù)優(yōu)化:

  • G1HeapRegionSize 可以指定堆的大小,可指定也可以有內(nèi)存管理啟發(fā)推斷分區(qū)大小。
  • xms/xmx 指定堆空間的最小值/最大值, 一定要設(shè)置正確的值,否則會(huì)影響分區(qū)大小推斷。
  • G1不要設(shè)置MaxNewSize,NewSize,Xmn, NewRatio,即不要顯示的設(shè)置年輕代的大小 。G1對(duì)內(nèi)存的管理不是連續(xù)的,所以即使重新分配一個(gè)堆分區(qū)的代價(jià)不大;G1的目標(biāo)滿足垃圾收集停頓,這需要G1根據(jù)停頓時(shí)間動(dòng)態(tài)調(diào)整收集的分區(qū),如果設(shè)置了固定的分區(qū)數(shù),G1不能調(diào)整新生代的大小,則不容易滿足停頓時(shí)間的需求。
  • GCTimeRatio指的是GC與應(yīng)用程序之間的時(shí)間占比,默認(rèn)值是9,表示GC與程序的時(shí)間占比為90%,增大該值將減少GC占用時(shí)間,增大該值則動(dòng)態(tài)擴(kuò)展內(nèi)存會(huì)更容易發(fā)生。

2.G1 GC可優(yōu)化參數(shù)

G1提供了兩種GC模式,Young GC 和 Mixed GC 兩種GC都會(huì)有STW.

Young GC

主要是對(duì)Eden區(qū)進(jìn)行GC ,一般情況下,會(huì)在Eden Region使用達(dá)到最大閾值時(shí),空間內(nèi)存不夠用時(shí),觸發(fā)YoungGC。每次Young GC會(huì)回收所有的Eden 和Serviour區(qū),并且將存活對(duì)象復(fù)制到Old區(qū)以及一些Survivor區(qū)。

Mixed GC

Mixed GC 會(huì)選?。úl(fā)標(biāo)記)所有的 Young Region和 回收收益較高的一些 Old Region, 然后進(jìn)行年輕代回收算法

混合回收分為兩個(gè)階段。

  • 并發(fā)標(biāo)記
  • 垃圾回收

其中并發(fā)標(biāo)記階段可以分為以下幾個(gè)子階段:

  • 初始標(biāo)記子階段:標(biāo)記所有直接可達(dá)的根對(duì)象,此階段會(huì)STW,
  • 并發(fā)標(biāo)記子階段:YoungGC 執(zhí)行完成之后,如果滿足并發(fā)標(biāo)記的的條件(已分配及將要分配的內(nèi)存占總內(nèi)存的比例超過(guò)閾值之后),就進(jìn)行并發(fā)標(biāo)記,其中-XX:ConcGCThreads 控制并發(fā)標(biāo)記線程數(shù)量,一個(gè)線程每次掃描一個(gè)Region。此時(shí)標(biāo)記存活對(duì)象,
  • 再標(biāo)記子階段:找出所有未被訪問(wèn)的存活對(duì)象,此過(guò)程為并發(fā)執(zhí)行,并且會(huì)有STW,其中-XX:ParallelGCThreads可指定GC暫停時(shí)可用的GC線程數(shù)。
  • 清理子階段:需要STW,存活對(duì)象計(jì)數(shù),整理標(biāo)記位圖,釋放完全空閑的分區(qū)。

混合回收階段的參數(shù)優(yōu)化:

  • 參數(shù)InitiatingHeapOccupancyPercent(IHOP),默認(rèn)值時(shí)45, 此值時(shí)啟動(dòng)并發(fā)標(biāo)記的先決條件,只有已分配內(nèi)存占總空間超過(guò)45%之后,才會(huì)啟動(dòng)并發(fā)標(biāo)記任務(wù)。增加此值,將導(dǎo)致并發(fā)標(biāo)記可能花費(fèi)更多的時(shí)間,也會(huì)讓YGC或者M(jìn)ixedGC時(shí)收集的分區(qū)變少,這樣就會(huì)導(dǎo)致更多的Full GC。這個(gè)值可以根據(jù)整體應(yīng)用占用的平均內(nèi)存來(lái)設(shè)置,可以把該值設(shè)置的比平均內(nèi)存稍微高一點(diǎn)。IHOP的設(shè)置效果很明顯,但是要設(shè)置合理的值并不容易,需要更多的性能測(cè)試來(lái)判斷。
  • 參數(shù)G1ReservePercent, 默認(rèn)值是10,如果GC晉升失敗導(dǎo)致FullGC,則可以調(diào)大該值
  • 參數(shù)ConcGCThreads為并發(fā)線程數(shù),默認(rèn)值為0,如果未設(shè)置,可以動(dòng)態(tài)調(diào)整,并且使用ParallelGCThreads為依據(jù)來(lái)推斷,如果并發(fā)標(biāo)記耗時(shí)較大,可以增大并發(fā)線程數(shù)。
  • HeapSizePerGCThread 默認(rèn)為64M,表示每64M分配一個(gè)線程
  • 參數(shù)UseDynamicNumberOfGCThreads,默認(rèn)為false,設(shè)為true表示可以動(dòng)態(tài)調(diào)整線程數(shù),調(diào)整范圍會(huì)根據(jù)最大線程數(shù),HeapSizePerGCThread確定。
  • 參數(shù)GCDrainStackTargetSize,默認(rèn)值為64,表示并發(fā)標(biāo)記子階段,一次標(biāo)記最多標(biāo)記的最多對(duì)象個(gè)數(shù)。
  • 參數(shù)GCMixedGCLiveThresholdPercent 默認(rèn)值85,用于判斷分區(qū)能否被加入到CSet中,低于該值將會(huì)被加入。
  • 參數(shù)G1HeapWastePercent 默認(rèn)值5,即當(dāng)Cset中可回收空間 占總空間的比例大于G1HeapWastePercent才會(huì)開(kāi)始混合回收。
  • 參數(shù)G1MixedGCCountTarget,默認(rèn)值為8,這個(gè)參數(shù)越大,收集老年代的分區(qū)越少,反之收集的分區(qū)就越多,盡量保持老年代分區(qū)在Cset中的比例超過(guò)1/G1MixedGCCountTarget。
  • 參數(shù)G1OldCSetRegionThresholdPercent 默認(rèn)值為10,表示最多收集10%的分區(qū)。
  • 參數(shù)G1ConcMarkStepDurationMillis 默認(rèn)值為10,表示每個(gè)并發(fā)標(biāo)記子階段最多執(zhí)行10ms

FullGC發(fā)生之后,基本都是串行回收. 如果不幸發(fā)生了FullGC, 那么我們能做的就是盡量讓FullGC盡快完成,然后降低其頻率。但是通常情況下,比較固定且較長(zhǎng)時(shí)間間隔的FullGC是被允許的。

那么FullGC相關(guān)也是有一些優(yōu)化調(diào)整的地方:

  • 使用參數(shù)MinHeapFreeRatio 用于判斷是否可以擴(kuò)展堆空間,增大該值擴(kuò)展的概率就會(huì)變小。
  • MaxHeapFreeRatio 判斷是否可以收縮空間,增大該值收縮的概率也會(huì)變小。
  • MarkSweepAlwaysCompactCount 默認(rèn)值為4,這個(gè)值表示經(jīng)過(guò)一定次數(shù)的GC之后,允許當(dāng)前區(qū)域中一定比例的死亡對(duì)象當(dāng)作存活對(duì)象處理,暫時(shí)不回收,從而加快FullGC的處理流程。這個(gè)比例可以使用MarkSweepDeadRatio來(lái)修改,默認(rèn)值為5.

總結(jié)

以上是一些優(yōu)化參數(shù)的使用,至于具體調(diào)優(yōu)的目的要根據(jù)我們各個(gè)程序的要求。一般而言需要滿足最大的吞吐量和最小的暫停時(shí)間,GC頻率盡量低,堆空間的有效利用率高等。可調(diào)整的部分有內(nèi)存參數(shù)的優(yōu)化,引用的處理(Rset),并發(fā)標(biāo)記(Mark),垃圾回收部分。

Oracle官方有一些推薦調(diào)優(yōu)的方向:

  • 針對(duì)年輕代的設(shè)置,盡量避免明確的設(shè)置年輕代的大小(使用-Xmn,-XX:NewRatio等),固定的年輕代大小會(huì)覆蓋最小停頓時(shí)間的目標(biāo)。
  • 對(duì)于暫停時(shí)間的目標(biāo),我們需要考慮平衡延遲和吞吐量,兩者不可兼得,所以需要找到一個(gè)最佳的平衡點(diǎn)。
  • 混合回收階段的優(yōu)化參數(shù)可以考慮率使用 -XX:InitiatingHeapOccupancyPercent 修改內(nèi)存占用比(具體可以參考前文), -XX:G1MixedGCLiveThresholdPercent 和 -XX:G1HeapWastePercent 改變混合垃圾回收的策略,-XX:G1MixedGCCountTarget 和 -XX:G1OldCSetRegionThresholdPercent 調(diào)整老年代在CSet中的占比
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1869

    瀏覽量

    33957
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3344

    瀏覽量

    60278
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    509

    瀏覽量

    20829
  • 服務(wù)端
    +關(guān)注

    關(guān)注

    0

    文章

    69

    瀏覽量

    7364
  • G1
    G1
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    adp7104是否有一個(gè)固定輸出或一個(gè)可調(diào)整輸出?

    我能否問(wèn)一下圖片中的設(shè)備是否有一個(gè)固定輸出或一個(gè)可調(diào)整輸出
    發(fā)表于 01-05 06:37

    KeenTune的算法之心——KeenOpt 調(diào)優(yōu)算法框架 | 龍蜥技術(shù)

    。幸運(yùn)的事,機(jī)器學(xué)習(xí)模型訓(xùn)練的耗時(shí)確實(shí)是靈活可調(diào)整的。然而,對(duì)于系統(tǒng)參數(shù)調(diào)優(yōu)來(lái)說(shuō),雖然調(diào)優(yōu)的時(shí)間
    發(fā)表于 10-28 10:36

    可調(diào)整或可編程的模擬輸入范圍有何優(yōu)勢(shì)?

    問(wèn):可調(diào)整或可編程的模擬輸入范圍有何優(yōu)勢(shì)?
    發(fā)表于 11-24 08:28

    可調(diào)整的壓控調(diào)節(jié)器閉環(huán)電路

    可調(diào)整的壓控調(diào)節(jié)器閉環(huán)電路
    發(fā)表于 02-09 16:13 ?1054次閱讀
    <b class='flag-5'>可調(diào)整</b>的壓控調(diào)節(jié)器閉環(huán)電路

    APEC推出輸出電壓可調(diào)整的升壓轉(zhuǎn)換器APE1911MP

    APEC推出輸出電壓可調(diào)整的升壓轉(zhuǎn)換器APE1911MP 富鼎先進(jìn)(APEC )推出一款高效率且輸出電壓可調(diào)整的升壓轉(zhuǎn)換器,其操作頻率為500KHZ且內(nèi)
    發(fā)表于 03-22 15:11 ?804次閱讀

    PWM程序占空比和周期可調(diào)整(經(jīng)過(guò)proteus仿真)資料下載

    PWM程序占空比和周期可調(diào)整(經(jīng)過(guò)proteus仿真)資料
    發(fā)表于 04-13 15:44 ?147次下載

    Alluxio線程池結(jié)構(gòu)與吞吐量調(diào)優(yōu)

    本文介紹了 Alluxio Master 的線程池結(jié)構(gòu)與每個(gè)線程的功能。在調(diào)優(yōu)過(guò)程中,利用分析結(jié)果調(diào)整審計(jì)日志的 blocking queue,調(diào)整 UFS-SYNC-PREFETCH
    發(fā)表于 11-11 11:36 ?1081次閱讀

    35W(可調(diào)整)移動(dòng)電源快充方案!使用智融SW7201/SW3516

    35W(可調(diào)整)移動(dòng)電源快充方案!使用智融SW7201/SW3516
    的頭像 發(fā)表于 06-19 19:11 ?3421次閱讀
    35W(<b class='flag-5'>可調(diào)整</b>)移動(dòng)電源快充方案!使用智融SW7201/SW3516

    RH3083MK:可調(diào)整的2.8A單抗力低輟學(xué)率數(shù)據(jù)表 RH3083MK:可調(diào)整的2.8A單抗力低輟學(xué)率數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)RH3083MK:可調(diào)整的2.8A單抗力低輟學(xué)率數(shù)據(jù)表相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有RH3083MK:可調(diào)整的2.8A單抗力低輟學(xué)率數(shù)據(jù)表的引腳圖、接線圖、封裝手冊(cè)
    發(fā)表于 10-07 17:51
    RH3083MK:<b class='flag-5'>可調(diào)整</b>的2.8A單抗力低輟學(xué)率數(shù)據(jù)表 RH3083MK:<b class='flag-5'>可調(diào)整</b>的2.8A單抗力低輟學(xué)率數(shù)據(jù)表

    RHH11885AMK:采用可調(diào)整的當(dāng)前限制數(shù)據(jù)表的負(fù)監(jiān)管 RHH11885AMK:采用可調(diào)整的當(dāng)前限制數(shù)據(jù)表的負(fù)監(jiān)管

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)RHH11885AMK:采用可調(diào)整的當(dāng)前限制數(shù)據(jù)表的負(fù)監(jiān)管相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有RHH11885AMK:采用可調(diào)整的當(dāng)前限制數(shù)據(jù)表的負(fù)監(jiān)管的引腳圖、接線圖
    發(fā)表于 10-07 17:53
    RHH11885AMK:采用<b class='flag-5'>可調(diào)整</b>的當(dāng)前限制數(shù)據(jù)表的負(fù)監(jiān)管 RHH11885AMK:采用<b class='flag-5'>可調(diào)整</b>的當(dāng)前限制數(shù)據(jù)表的負(fù)監(jiān)管

    RHH1085:3A 低輟學(xué)率陽(yáng)性可調(diào)整監(jiān)管數(shù)據(jù)表 RHH1085:3A 低輟學(xué)率陽(yáng)性可調(diào)整監(jiān)管數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)RHH1085:3A 低輟學(xué)率陽(yáng)性可調(diào)整監(jiān)管數(shù)據(jù)表相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有RHH1085:3A 低輟學(xué)率陽(yáng)性可調(diào)整監(jiān)管數(shù)據(jù)表的引腳圖、接線圖、封裝手冊(cè)、中文
    發(fā)表于 10-07 17:53
    RHH1085:3A 低輟學(xué)率陽(yáng)性<b class='flag-5'>可調(diào)整</b>監(jiān)管數(shù)據(jù)表 RHH1085:3A 低輟學(xué)率陽(yáng)性<b class='flag-5'>可調(diào)整</b>監(jiān)管數(shù)據(jù)表

    RHR137:負(fù)可調(diào)整監(jiān)管數(shù)據(jù)表 ADI

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)RHR137:負(fù)可調(diào)整監(jiān)管數(shù)據(jù)表相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有RHR137:負(fù)可調(diào)整監(jiān)管數(shù)據(jù)表的引腳圖、接線圖、封裝手冊(cè)、中文資料、英文資料,RHR137:負(fù)
    發(fā)表于 10-08 16:03
    RHR137:負(fù)<b class='flag-5'>可調(diào)整</b>監(jiān)管數(shù)據(jù)表 ADI

    ADUM3195:配有可調(diào)整收益和單項(xiàng)產(chǎn)出數(shù)據(jù)表的單獨(dú)放大器 ADI

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)ADUM3195:配有可調(diào)整收益和單項(xiàng)產(chǎn)出數(shù)據(jù)表的單獨(dú)放大器相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有ADUM3195:配有可調(diào)整收益和單項(xiàng)產(chǎn)出數(shù)據(jù)表的單獨(dú)放大器的引腳圖
    發(fā)表于 10-10 18:40
    ADUM3195:配有<b class='flag-5'>可調(diào)整</b>收益和單項(xiàng)產(chǎn)出數(shù)據(jù)表的單獨(dú)放大器 ADI

    jvm調(diào)優(yōu)參數(shù)

    JVM(Java虛擬機(jī))是Java程序的運(yùn)行環(huán)境,它負(fù)責(zé)解釋Java字節(jié)碼并執(zhí)行相應(yīng)的指令。為了提高應(yīng)用程序的性能和穩(wěn)定性,我們可以調(diào)優(yōu)JVM的參數(shù)。 JVM調(diào)
    的頭像 發(fā)表于 12-05 11:29 ?1508次閱讀

    jvm參數(shù)的設(shè)置和jvm調(diào)優(yōu)

    JVM(Java虛擬機(jī))參數(shù)的設(shè)置和調(diào)優(yōu)對(duì)于提高Java應(yīng)用程序的性能和穩(wěn)定性非常重要。在本文中,我們將詳細(xì)介紹JVM參數(shù)的設(shè)置和調(diào)
    的頭像 發(fā)表于 12-05 11:36 ?2907次閱讀