1. 降低Minor GC頻率
Minor GC的時(shí)間分為兩部分:掃描新生代和復(fù)制存活對(duì)象時(shí)間。
如果堆中短期的對(duì)象很多,擴(kuò)容新生代的大小(雖然會(huì)增加掃描新生代的時(shí)間,但同時(shí)也會(huì)縮短復(fù)制對(duì)象的時(shí)間,因?yàn)闇p少了存回對(duì)象的數(shù)量。對(duì)于老年代來說,進(jìn)行Major,甚至是Full GC來說,所需要的時(shí)間也會(huì)減少。PS:掃描對(duì)象成本明顯低于復(fù)制存活對(duì)象的成本)。
如果堆中長(zhǎng)期存活的對(duì)象很多,則不應(yīng)該增加新生代的大小,因?yàn)闀?huì)增加Minor GC的時(shí)間(掃描和復(fù)制存活對(duì)象的時(shí)間,都不會(huì)減少)。
2. 降低Full GC頻率
2.1 減少大對(duì)象的創(chuàng)建:
會(huì)超過所設(shè)置的大對(duì)象大小的閾值,直接進(jìn)入老年代;
即使沒有超過所設(shè)置的大對(duì)象大小的閾值,在新生代空間有限的情況下,根據(jù)空間分配擔(dān)保也會(huì)有大幾率被分配到老年代。
2.2 增大堆內(nèi)空間設(shè)置
初始化堆內(nèi)存和最大堆內(nèi)存大小相同,也可以降低Full GC的頻率。也會(huì)減少內(nèi)存自動(dòng)擴(kuò)容、自動(dòng)降容的成本。
3. 選擇適當(dāng)?shù)腉C回收器
對(duì)單次操作的響應(yīng)時(shí)間有優(yōu)先的要求,可以選擇CMS和G1收集器堆系統(tǒng)吞吐量有優(yōu)先的要求,可以選擇Parallel Scavenge收集器。