調大Eden區會增加Minor GC的時間?

2021-10-25 01:36:56 字數 573 閱讀 4820

首先反駁一下調大eden區會增加minor gc的說法,這裡我們可以簡單的把minor gc分為兩步驟,一是掃瞄新生代(t1),二是複製存活物件(t2),所以整個minor gc的時間就是t1+t2。而增大eden區,eden區中能夠容納的存活物件可能會更多,自然也就推遲了minor gc被觸發的時間,畢竟只有eden區滿了才會觸發minor gc。

假設

有乙個物件,能夠存活500ms的時間,而minor gc的間隔是300ms,那麼此時該物件的minor gc的時間t1+t2,然後增加eden區記憶體,minor gc的間隔變為了600ms,那麼這個只存活500ms的物件就會在eden區就被**掉,而不用再做複製物件的操作。當然了,由於eden區變大,所以要掃瞄的存活物件也可能變多,那麼t1的時間就很可能增大,但是一般情況下,在虛擬機器中,複製物件的開銷要遠高於掃瞄。

總結

所以調大eden區,雖然可能會增加掃瞄時間,但是也能減少一些較長時間存活物件的複製成本,並不能簡單的斷定調大eden區就會增加minor gc的時間,還是得做一些測試,以實驗資料來衡量結果。

Shuffle調優一 調節map端緩衝區大小

在spark任務執行過程中,如果shuffle的map端處理的資料量比較大,但是map端緩衝的大小是固定的,可能會出現map端緩衝資料頻繁spill溢寫到磁碟檔案中的情況,使得效能非常低下,通過調節 map端緩衝的大小,可以避免頻繁的磁碟 io操作,進而提公升 spark 任務的整體效能。map端緩...

Linux TCP 緩衝區引數調優

系統原值 wqf admin autopush cat proc sys net core rmem max 4194304 wqf admin autopush cat proc sys net core wmem max 1048576 wqf admin autopush cat proc s...

C的記憶體四大區

前提 四區 靜態區 用於存放所有的全域性變數和靜態變數。int a 10 靜態區int main 區 就是存放程式的執行 執行時該區內容不可修改。棧區 用於存放所有的區域性auto變數 非static,非register等 先進後出原則!需要說明的是,棧區通常比較小,以kb為單位!所以存在overs...