新生代仓坞,多線程,使用復(fù)制算法无埃,是多線程的并行的收集器毛雇。
目標(biāo):達(dá)到一個(gè)可控的吞吐量(Throughput)侦镇。
吞吐量:CPU用于運(yùn)行代碼時(shí)間 與 CPU總消耗時(shí)間的 比
公式: 吞吐量 = 運(yùn)行代碼時(shí)間 / ( 運(yùn)行代碼時(shí)間 + GC時(shí)間)
虛擬機(jī)運(yùn)行 100 分鐘,GC用掉1分鐘震捣,則吞吐量為99%闹炉。 100 /(100 + 1) = 0.99
1.停頓時(shí)間越短越好
-XX:MaxGCPauseMillis: 最大GC停頓時(shí)間,最小可為0
-XX:GCTimeRatio: 吞吐量大小,1-100
2.停頓時(shí)間與空間成反比
停頓時(shí)間越短渣触,則新生代的空間就越小。
通過減小新生代的空間皂冰,讓里面的垃圾變少养篓,從而加快了集速度。
原來:500MB 垃圾觉至,10秒收集一次,每次停頓100毫秒
為了縮短時(shí)間峻贮,修改** -XX:MaxGCPauseMillis** 參數(shù)应闯,使新生代空間變小,產(chǎn)生的垃圾就少了碉纺,停頓時(shí)間短了:
現(xiàn)在:300MB 垃圾,5秒收集一次耿导, 每次停頓70毫秒态贤。
那時(shí)問題來了,停頓時(shí)間下降了箱吕,但是頻率高了,則吞吐量也跟著降下來了茬高。
3.GC 時(shí)間占總時(shí)間的比例
GCTimeRatio 進(jìn)行這個(gè)設(shè)置1-100之間,相當(dāng)于吞量的倒數(shù)丽猬。
計(jì)算方法:
1.設(shè)置為 19 則: 1 / (1 + 19) = 5%婚瓜,即最大 5% 的收集時(shí)間
2.設(shè)置為 99 則: 1 / (1 + 99) = 1%,即最大 1% 的收集時(shí)間