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

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

1.G1簡介

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

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

其特點如下:

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

1.1分區(qū)

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

圖片

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

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

圖片
img

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

  • 可以通過-XX:G1HeapRegionSize=<>來指定大小,默認為0.
  • 默認情況下是將整個堆分為2048個Region。
1.1.1 新生代大小

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

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

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

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

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

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

Young GC

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

Mixed GC

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

混合回收分為兩個階段。

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

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

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

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

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

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

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

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

總結(jié)

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

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

  • 針對年輕代的設(shè)置,盡量避免明確的設(shè)置年輕代的大?。ㄊ褂?Xmn,-XX:NewRatio等),固定的年輕代大小會覆蓋最小停頓時間的目標(biāo)。
  • 對于暫停時間的目標(biāo),我們需要考慮平衡延遲和吞吐量,兩者不可兼得,所以需要找到一個最佳的平衡點。
  • 混合回收階段的優(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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1868

    瀏覽量

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

    關(guān)注

    38

    文章

    3342

    瀏覽量

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

    關(guān)注

    0

    文章

    508

    瀏覽量

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

    關(guān)注

    0

    文章

    68

    瀏覽量

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

    關(guān)注

    0

    文章

    2

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    35W(可調(diào)整)移動電源快充方案!使用智融SW7201/SW3516
    的頭像 發(fā)表于 06-19 19:11 ?3047次閱讀
    35W(<b class='flag-5'>可調(diào)整</b>)移動電源快充方案!使用智融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ù)手冊,更有RH3083MK:可調(diào)整的2.8A單抗力低輟學(xué)率數(shù)據(jù)表的引腳圖、接線圖、封裝手冊
    發(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ù)表的負監(jiān)管 RHH11885AMK:采用可調(diào)整的當(dāng)前限制數(shù)據(jù)表的負監(jiān)管

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

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

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

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

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

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

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

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

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

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

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