在java heap 空間中會(huì)分成兩個(gè)區(qū)域 Young 和Old蜕琴,Young部分主要存儲(chǔ)的是 存活時(shí)間短的對(duì)象翰蠢;而Old 部分主要保存的是存在時(shí)間更長(zhǎng)對(duì)象
Young 部分又可以細(xì)分成三部分,分別為 Eden谅猾、Survivor1、Survivor2
-
簡(jiǎn)單描述下gc的過(guò)程:當(dāng)Eden部分滿,就觸發(fā)一次在Eden上的小GC迅耘,將在Eden和Survivor1上的對(duì)象 拷貝到Surviv2,Survivor 區(qū)域會(huì)做切換监署。如果一個(gè)對(duì)象已經(jīng)存在足夠時(shí)間或Survivor2的空間滿了颤专,那就將對(duì)象挪到Old 區(qū)域。最終當(dāng)Old區(qū)域快要消耗完時(shí)就觸發(fā) 完整GC钠乏,會(huì)比較耗性能
- 在Spark的gc優(yōu)化目標(biāo)栖秕,確保長(zhǎng)時(shí)間保留保留的RDDs被存儲(chǔ)在Old 區(qū)域,在Young 區(qū)域有足夠的空間來(lái)存儲(chǔ)短時(shí)間存儲(chǔ)的對(duì)象晓避。盡量避免在task execution中產(chǎn)生的臨時(shí)對(duì)象觸發(fā) full GC簇捍,可以采用以下幾步設(shè)置來(lái)優(yōu)化
1: 通過(guò)觀察GC stats查看是是否再task還沒(méi)結(jié)束前有多次的full GC只壳,如果發(fā)現(xiàn)很多次,就表示執(zhí)行task時(shí)內(nèi)存不足
2: 在GC stats中暑塑,如果發(fā)現(xiàn)小gc觸發(fā)次數(shù)比較多吼句,就需要增加Eden區(qū)域的大小來(lái)優(yōu)化。你可以設(shè)置一個(gè)超過(guò)task需要的內(nèi)存數(shù)來(lái)設(shè)置Eden部分的大小事格。假設(shè)該預(yù)估值為E惕艳,你就可以設(shè)置Young 區(qū)域的大小 -Xmn=4/3E (擴(kuò)展到4/3 因?yàn)檫€需要考慮到Survivor部分的)
3: 通過(guò)查看gc stats 發(fā)現(xiàn)OldGen部分的空間接近消耗完,減少緩存內(nèi)存總量 spark.memory.fraction驹愚;通過(guò)緩存更少的對(duì)象远搪,降低task執(zhí)行速度》贽啵或 考慮減少Young區(qū)域的小大谁鳍,如果上面有設(shè)置過(guò)-Xmn值,那就適當(dāng)?shù)臏p少該值劫瞳。如果沒(méi)有變更多-Xmn值就試著修改JVM的NewRatio參數(shù)倘潜,絕大部分JVM 中設(shè)置的默認(rèn)值2,意思是說(shuō)Old 部分占整個(gè)heap的2/3,它必須做夠大要超過(guò)spark.memory.fraction的值
4: 開(kāi)啟G1GC 通過(guò) -XX:+UseG1GC選項(xiàng)柠新,在gc成為瓶頸的時(shí)候可以顯著提升性能窍荧。注意在需要執(zhí)行消耗過(guò)多內(nèi)存的任務(wù)時(shí),增加G1 region 的大小會(huì)非常關(guān)鍵 —XX:G1HeapRegionSize
5: 舉一個(gè)例子恨憎,當(dāng)你的task是從HDFS中讀取數(shù)據(jù)蕊退,一個(gè)task需要消耗多少內(nèi)存可以通過(guò)HDFS的block大小來(lái)預(yù)估,注意解壓后的block一般會(huì)增加23倍的大小憔恳,我們希望在同一個(gè)工作進(jìn)程中可以有34個(gè)task瓤荔,并且HDFS的block大小為128MB,所以可以得到預(yù)估值E Eden值 (34*128MB)
6: 設(shè)置完之后钥组,在監(jiān)控gc stats的信息是否有多改變PS:監(jiān)控gc的情況 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps to the Java options.
Spark GC 高級(jí)優(yōu)化
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門褒翰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事优训《淠悖” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵揣非,是天一觀的道長(zhǎng)抡医。 經(jīng)常有香客問(wèn)我,道長(zhǎng)妆兑,這世上最難降的妖魔是什么魂拦? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮搁嗓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘箱靴。我一直安慰自己腺逛,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布衡怀。 她就那樣靜靜地躺著棍矛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抛杨。 梳的紋絲不亂的頭發(fā)上够委,一...
- 那天,我揣著相機(jī)與錄音怖现,去河邊找鬼茁帽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛屈嗤,可吹牛的內(nèi)容都是我干的潘拨。 我是一名探鬼主播,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼饶号,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼铁追!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起茫船,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤琅束,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后算谈,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體涩禀,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年濒生,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了埋泵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
- 正文 年R本政府宣布浴井,位于F島的核電站,受9級(jí)特大地震影響霉撵,放射性物質(zhì)發(fā)生泄漏磺浙。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一徒坡、第九天 我趴在偏房一處隱蔽的房頂上張望撕氧。 院中可真熱鬧,春花似錦喇完、人聲如沸伦泥。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)不脯。三九已至,卻和暖如春刻诊,著一層夾襖步出監(jiān)牢的瞬間防楷,已是汗流浹背。 一陣腳步聲響...
- 正文 我出身青樓是整,卻偏偏與公主長(zhǎng)得像肖揣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浮入,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 轉(zhuǎn)載blog.csdn.net/ning109314/article/details/10411495/ JVM工...
- 1.什么是垃圾回收龙优? 垃圾回收(Garbage Collection)是Java虛擬機(jī)(JVM)垃圾回收器提供...
- 作者:一字馬胡 轉(zhuǎn)載標(biāo)志 【2017-11-12】 更新日志 日期更新內(nèi)容備注 2017-11-12新建文章初版 ...
- 一 、java虛擬機(jī)底層結(jié)構(gòu)詳解 我們知道事秀,一個(gè)JVM實(shí)例的行為不光是它自己的事彤断,還涉及到它的子系統(tǒng)、存儲(chǔ)區(qū)域易迹、...
- HBase最佳實(shí)踐-CMS GC調(diào)優(yōu) – 有態(tài)度的HBase/Spark/BigData http://hbas...