日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

Java并行GC的使用和調(diào)優(yōu)

來(lái)源: 責(zé)編: 時(shí)間:2023-10-13 14:33:08 275觀看
導(dǎo)讀并行垃圾收集器(Parallel GC、并行GC)是在多核CPU環(huán)境下的一種JVM垃圾收集算法,它可以在多個(gè)線程內(nèi)并行執(zhí)行垃圾收集功能,從而減少長(zhǎng)時(shí)間GC對(duì)應(yīng)用系統(tǒng)造成的影響。下面主要介紹關(guān)于并行GC的使用和調(diào)優(yōu)相關(guān)內(nèi)容。在什么時(shí)

并行垃圾收集器(Parallel GC、并行GC)是在多核CPU環(huán)境下的一種JVM垃圾收集算法,它可以在多個(gè)線程內(nèi)并行執(zhí)行垃圾收集功能,從而減少長(zhǎng)時(shí)間GC對(duì)應(yīng)用系統(tǒng)造成的影響。ly628資訊網(wǎng)——每日最新資訊28at.com

下面主要介紹關(guān)于并行GC的使用和調(diào)優(yōu)相關(guān)內(nèi)容。ly628資訊網(wǎng)——每日最新資訊28at.com

ly628資訊網(wǎng)——每日最新資訊28at.com

在什么時(shí)候使用并行GC

如果應(yīng)用存在以下要求,那么就可以考慮使用Parallel GC:ly628資訊網(wǎng)——每日最新資訊28at.com

  • 側(cè)重吞吐量:如果應(yīng)用程序?qū)κ聞?wù)吞吐量要求很高,并且可以容忍長(zhǎng)時(shí)間執(zhí)行垃圾收集,那么并行GC可能就是一個(gè)合適的選擇。它主要通過允許垃圾收集與應(yīng)用程序執(zhí)行同時(shí)執(zhí)行來(lái)優(yōu)化吞吐量。
  • 批量處理任務(wù):應(yīng)用程序如果涉及到批處理或者數(shù)據(jù)分析的任務(wù),可以考慮使用并行GC。這些類型的應(yīng)用程序經(jīng)常執(zhí)行大量的計(jì)算,并行GC有助于最小化垃圾收集過程對(duì)應(yīng)用程序總體處理時(shí)間產(chǎn)生的影響。
  • 中等以上堆內(nèi)存:并行GC非常適合具有中等堆到較大堆的應(yīng)用程序。如果應(yīng)用程序需要大量堆來(lái)滿足其內(nèi)存需求,并行GC可以有效地管理內(nèi)存并減少垃圾收集對(duì)應(yīng)用程序的影響。

如何配置啟用并行GC

可以在啟動(dòng)Java應(yīng)用程序時(shí)傳遞以下參數(shù),以啟動(dòng)并行GC(Parallel GC):ly628資訊網(wǎng)——每日最新資訊28at.com

-XX:+UseParallelGC

這個(gè)JVM參數(shù)指的是JVM使用并行GC算法進(jìn)行垃圾收集。但需要注意的是,在Java 8之前的JVM版本,不需要顯式地指定垃圾收集算法,所有服務(wù)類JVM的默認(rèn)垃圾收集器都是ParallelGC。ly628資訊網(wǎng)——每日最新資訊28at.com

在Java 并行GC調(diào)優(yōu)方面,下面介紹幾個(gè)用于控制垃圾收集過程的關(guān)鍵JVM參數(shù)。包括:Heap和generation的大小參數(shù)、GC吞吐量相關(guān)參數(shù)、其他參數(shù)。ly628資訊網(wǎng)——每日最新資訊28at.com

1.Heap和generation的大小參數(shù)  

并行GC的調(diào)優(yōu)涉及到整個(gè)堆的大小與年輕代和老代的大小之間的平衡。雖然較大的堆通常會(huì)提高吞吐量,但它也會(huì)導(dǎo)致執(zhí)行GC期間消耗更長(zhǎng)的時(shí)間。因此,找到“堆”和“代”的最佳大小至關(guān)重要。下面這些JVM參數(shù)支持調(diào)整堆大小和生成大小,以實(shí)現(xiàn)最佳GC配置。ly628資訊網(wǎng)——每日最新資訊28at.com

(1) -Xmxly628資訊網(wǎng)——每日最新資訊28at.com

-Xmx

這個(gè)參數(shù)設(shè)置了最大堆大小,它設(shè)置了內(nèi)存分配的上限。通過仔細(xì)評(píng)估并選擇恰當(dāng)?shù)?Xmx值,可以控制整個(gè)堆的大小使得應(yīng)用程序的可用內(nèi)存和GC性能之間更加平衡。ly628資訊網(wǎng)——每日最新資訊28at.com

(2) -XX:NewSize 、-XX:MaxNewSize、-XX:NewRatioly628資訊網(wǎng)——每日最新資訊28at.com

-XX:NewSize -XX:MaxNewSize-XX:NewRatio

這幾個(gè)參數(shù)決定了分配新對(duì)象的Young Generation的大小。-XX:NewSize設(shè)置初始大小,而-XX:MaxNewSize用于控制內(nèi)存上限,-XX:NewRatio用于配置年輕代和終身代之間的比率。通過這些值可以微調(diào)年輕代的大小和比例。ly628資訊網(wǎng)——每日最新資訊28at.com

(3) -XX:YoungGenerationSizeIncremently628資訊網(wǎng)——每日最新資訊28at.com

-XX:TenuredGenerationSizeIncremently628資訊網(wǎng)——每日最新資訊28at.com

-XX:YoungGenerationSizeIncrement-XX:TenuredGenerationSizeIncrement

這兩個(gè)參數(shù)分別定義了年輕代和持久代的內(nèi)存增量大小。年輕代和持久代的大小增量是內(nèi)存分配和垃圾收集行為中的關(guān)鍵因素。增長(zhǎng)和收縮是以不同的速度進(jìn)行的。默認(rèn)情況下以20%的增量增長(zhǎng),以5%的增量收縮。增長(zhǎng)的百分比由參數(shù)-XX:YoungGeneratinotallow=<Y>和-XX:TenuredGeneratinotallow=<T>進(jìn)行配置。ly628資訊網(wǎng)——每日最新資訊28at.com

(4) -XX:AdaptiveSizeDecrementScaleFactorly628資訊網(wǎng)——每日最新資訊28at.com

-XX:AdaptiveSizeDecrementScaleFactor

這個(gè)參數(shù)用于設(shè)置在收縮期間遞減的比例因子。根據(jù)參數(shù)-XX:AdaptiveSizeDecrementScaleFactor=<D>調(diào)整收縮的比例。如果增長(zhǎng)增量為X%,則收縮的減少量為X/D%。ly628資訊網(wǎng)——每日最新資訊28at.com

ly628資訊網(wǎng)——每日最新資訊28at.com

2.GC吞吐量相關(guān)的參數(shù)調(diào)優(yōu)

為了實(shí)現(xiàn)垃圾收集最佳性能,控制GC暫停時(shí)間和優(yōu)化GC吞吐量至關(guān)重要,GC吞吐量一般用“專門用于垃圾收集的時(shí)間量”與“應(yīng)用程序執(zhí)行時(shí)間量”的比例表示。以下是幾個(gè)基于GC吞吐量的調(diào)優(yōu)參數(shù)。ly628資訊網(wǎng)——每日最新資訊28at.com

(1) -XX:MaxGCPauseMillisly628資訊網(wǎng)——每日最新資訊28at.com

-XX:MaxGCPauseMillis

這個(gè)參數(shù)允許開發(fā)人員指定垃圾收集所需的最大暫停時(shí)間(以毫秒為單位)。通過設(shè)置一個(gè)適當(dāng)?shù)闹担_發(fā)人員可以調(diào)節(jié)GC暫停的時(shí)長(zhǎng),確保在可接受的范圍內(nèi)。 ly628資訊網(wǎng)——每日最新資訊28at.com

(2) -XX:GCTimeRatioly628資訊網(wǎng)——每日最新資訊28at.com

-XX:GCTimeRatio

這個(gè)參數(shù)使用公式1 /(1 + N)設(shè)置垃圾收集時(shí)間與應(yīng)用程序時(shí)間的比率,其中N是正整數(shù)值。目的是定義垃圾收集所需的時(shí)間與應(yīng)用程序執(zhí)行時(shí)間的占比,以優(yōu)化GC吞吐量。例如,-XX:GCTimeRatio=19。使用該配置的目標(biāo)是將總應(yīng)用程序執(zhí)行時(shí)間的1/20或5%分配給垃圾收集。這意味著對(duì)于每20個(gè)時(shí)間單位(毫秒),在垃圾收集和應(yīng)用執(zhí)行總體時(shí)間的大約19毫秒中,大約有1個(gè)時(shí)間單位的時(shí)間將被分配給垃圾收集過程,而剩余的19個(gè)時(shí)間單位將專門用于應(yīng)用的執(zhí)行。這個(gè)參數(shù)默認(rèn)值為99,意味著垃圾收集的目標(biāo)時(shí)間為1%。ly628資訊網(wǎng)——每日最新資訊28at.com

(3) -XX:GCTimePercentagely628資訊網(wǎng)——每日最新資訊28at.com

-XX:GCTimePercentage

ly628資訊網(wǎng)——每日最新資訊28at.com

這個(gè)參數(shù)更加直接,開發(fā)人員可以通過這個(gè)參數(shù)直接分配垃圾收集的時(shí)間與應(yīng)用執(zhí)行時(shí)間的期望百分比(GC吞吐量)。例如:設(shè)置“-XX:GCTimePercentage=5”表示分配總時(shí)間的5%用于垃圾收集,剩余的95%用于應(yīng)用程序執(zhí)行。 ly628資訊網(wǎng)——每日最新資訊28at.com

總之,‘-XX:GCTimeRatio‘或‘-XX:GCTimePercentage‘這兩個(gè)參數(shù)都可以靈活地表示垃圾收集所需的時(shí)間。相比之下,使用“-XX:GCTimePercentage”比“-XX:GCTimeRatio”更加好理解。ly628資訊網(wǎng)——每日最新資訊28at.com

ly628資訊網(wǎng)——每日最新資訊28at.com

3.其他參數(shù)

 除前面幾個(gè)JVM參數(shù)之外,還有一些其他參數(shù)也可用于調(diào)優(yōu)并行GC算法的性能。ly628資訊網(wǎng)——每日最新資訊28at.com

(1) -XX:ParallelGCThreadsly628資訊網(wǎng)——每日最新資訊28at.com

-XX:ParallelGCThreads

這個(gè)參數(shù)允許開發(fā)人員指定并行GC算法中用于垃圾收集的線程數(shù)。通過基于當(dāng)前CPU可用的內(nèi)核數(shù)設(shè)置適當(dāng)?shù)闹担浞掷枚嗪讼到y(tǒng)的處理能力來(lái)優(yōu)化吞吐量。線程太少或太多都不利于資源平衡,都可能導(dǎo)致性能不佳。ly628資訊網(wǎng)——每日最新資訊28at.com

(2) -XX:-UseAdaptiveSizePolicyly628資訊網(wǎng)——每日最新資訊28at.com

-XX:-UseAdaptiveSizePolicy

這個(gè)參數(shù)允許根據(jù)應(yīng)用程序?qū)?nèi)存的需求動(dòng)態(tài)調(diào)整年輕代和老年代的大小。默認(rèn)情況下,“UseAdaptiveSizePolicy”處于啟用狀態(tài)。ly628資訊網(wǎng)——每日最新資訊28at.com

啟用:-XX:+UseAdaptiveSizePolicy關(guān)閉:-XX:-UseAdaptiveSizePolicy

ly628資訊網(wǎng)——每日最新資訊28at.com

然而,默認(rèn)情況下這個(gè)參數(shù)會(huì)根據(jù)應(yīng)用程序?qū)?nèi)存的需求動(dòng)態(tài)調(diào)整年輕代和老年代的大小。動(dòng)態(tài)調(diào)整可能導(dǎo)致頻繁的“Full GC”,增加了GC時(shí)間。為了減少這類問題,我們可以通過設(shè)置-XX:-UseAdaptiveSizePolicy參數(shù)來(lái)禁用它,并減少GC時(shí)間。ly628資訊網(wǎng)——每日最新資訊28at.com

ly628資訊網(wǎng)——每日最新資訊28at.com

執(zhí)行并行GC調(diào)優(yōu)

如果需要了解并行GC的性能,最好的方式是通過分析GC日志。GC日志包含了垃圾收集事件、內(nèi)存使用情況以及其他相關(guān)的指標(biāo)詳細(xì)信息。ly628資訊網(wǎng)——每日最新資訊28at.com

ly628資訊網(wǎng)——每日最新資訊28at.com

以下幾個(gè)工具可以幫助分析GC日志:ly628資訊網(wǎng)——每日最新資訊28at.com

  • GCey
  • IBM GC
  • Memory Visualizer
  • HP Jmeter
  • Google Garbage Cat

通過使用這些工具,可以讓內(nèi)存的分配更加直觀,能夠識(shí)別潛在的瓶頸,并評(píng)估垃圾收集的效率。為并行GC的調(diào)優(yōu)提供依據(jù)。ly628資訊網(wǎng)——每日最新資訊28at.com

ly628資訊網(wǎng)——每日最新資訊28at.com

總之

通過調(diào)整堆的大小、代的大小和GC吞吐量相關(guān)參數(shù)等,可以優(yōu)化垃圾收集過程,最大限度地提高內(nèi)存利用率,最大限度地減少GC時(shí)長(zhǎng),提高Java應(yīng)用程序的垃圾收集并效率,并釋放Java應(yīng)用程序的潛力。另外,對(duì)應(yīng)用程序執(zhí)行過程進(jìn)行持續(xù)監(jiān)控、分析和優(yōu)化,是保持應(yīng)用程序處于最佳性能的重要訣竅。ly628資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-13241-0.htmlJava并行GC的使用和調(diào)優(yōu)

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 十個(gè)提高VS Code工作效率的技巧

下一篇: 通過這個(gè)技術(shù),瀏覽器可以運(yùn)行Node.js、Rust、Python、PHP、C++、Java代碼了!

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 手游| 南涧| 都匀市| 通河县| 祁连县| 仁化县| 汉寿县| 固镇县| 长子县| 肥城市| 读书| 鹿邑县| 巴林左旗| 武平县| 焉耆| 苍梧县| 元江| 杭锦后旗| 双流县| 阳原县| 泗阳县| 霍城县| 杭锦旗| 仙游县| 柘城县| 清远市| 蓬溪县| 姚安县| 尼勒克县| 洛隆县| 盐源县| 海南省| 南宁市| 颍上县| 淮北市| 扎囊县| 友谊县| 韩城市| 泗洪县| 盐边县| 探索|