堆參數(shù)
回收器參數(shù)
如上表所示,目前主要有串行、并行和并發(fā)三種,對(duì)于大內(nèi)存的應(yīng)用而言,串行的性能太低,因此使用到的主要是并行和并發(fā)兩種。并行和并發(fā) GC 的策略通過 UseParallelGC 和 UseConcMarkSweepGC 來指定,還有一些細(xì)節(jié)的配置參數(shù)用來配置策略的執(zhí)行方式。例如:XX:ParallelGCThreads, XX:CMSInitiatingOccupancyFraction 等。 通常:Young 區(qū)對(duì)象回收只可選擇并行(耗時(shí)間),Old 區(qū)選擇并發(fā)(耗 CPU)。
項(xiàng)目中常用配置
常用組合
GC 調(diào)優(yōu)原則
在調(diào)優(yōu)之前,我們需要記住下面的原則:
多數(shù)的 Java 應(yīng)用不需要在服務(wù)器上進(jìn)行 GC 優(yōu)化;
多數(shù)導(dǎo)致 GC 問題的 Java 應(yīng)用,都不是因?yàn)槲覀儏?shù)設(shè)置錯(cuò)誤,而是代碼問題;
在應(yīng)用上線之前,先考慮將機(jī)器的 JVM 參數(shù)設(shè)置到最優(yōu)(最適合);
減少創(chuàng)建對(duì)象的數(shù)量;
減少使用全局變量和大對(duì)象;
GC 優(yōu)化是到最后不得已才采用的手段;
在實(shí)際使用中,分析 GC 情況優(yōu)化代碼比優(yōu)化 GC 參數(shù)要多得多。
GC 調(diào)優(yōu)目的
將轉(zhuǎn)移到老年代的對(duì)象數(shù)量降低到最小;
減少 GC 的執(zhí)行時(shí)間。
策略 1:將新對(duì)象預(yù)留在新生代,由于 Full GC 的成本遠(yuǎn)高于 Minor GC,因此盡可能將對(duì)象分配在新生代是明智的做法,實(shí)際項(xiàng)目中根據(jù) GC 日志分析新生代空間大小分配是否合理,適當(dāng)通過“-Xmn”命令調(diào)節(jié)新生代大小,大限度降低新對(duì)象直接進(jìn)入老年代的情況。
策略 2:大對(duì)象進(jìn)入老年代,雖然大部分情況下,將對(duì)象分配在新生代是合理的。但是對(duì)于大對(duì)象這種做法卻值得商榷,大對(duì)象如果首次在新生代分配可能會(huì)出現(xiàn)空間不足導(dǎo)致很多年齡不夠的小對(duì)象被分配的老年代,破壞新生代的對(duì)象結(jié)構(gòu),可能會(huì)出現(xiàn)頻繁的 full gc。因此,對(duì)于大對(duì)象,可以設(shè)置直接進(jìn)入老年代(當(dāng)然短命的大對(duì)象對(duì)于垃圾回收老說簡直就是噩夢(mèng))。-XX:PretenureSizeThreshold 可以設(shè)置直接進(jìn)入老年代的對(duì)象大小。
策略 3:合理設(shè)置進(jìn)入老年代對(duì)象的年齡,-XX:MaxTenuringThreshold 設(shè)置對(duì)象進(jìn)入老年代的年齡大小,減少老年代的內(nèi)存占用,降低 full gc 發(fā)生的頻率。
策略 4:設(shè)置穩(wěn)定的堆大小,堆大小設(shè)置有兩個(gè)參數(shù):-Xms 初始化堆大小,-Xmx 大堆大小。
策略5:注意: 如果滿足下面的指標(biāo),則一般不需要進(jìn)行 GC 優(yōu)化:
MinorGC 執(zhí)行時(shí)間不到50ms;
Minor GC 執(zhí)行不頻繁,約10秒一次;
Full GC 執(zhí)行時(shí)間不到1s;
Full GC 執(zhí)行頻率不算頻繁,不低于10分鐘1次。
后續(xù)會(huì)持續(xù)更新性能優(yōu)化專題知識(shí),寫的不好的地方也希望大牛能指點(diǎn)一下,大家覺得不錯(cuò)可以點(diǎn)個(gè)贊在關(guān)注下,以后還會(huì)分享更多文章!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。