首頁 >Java >java教程 >JVM記憶體管理------垃圾蒐集器參數精解

JVM記憶體管理------垃圾蒐集器參數精解

黄舟
黄舟原創
2016-12-28 15:52:581734瀏覽

本文是GC相關的最後一篇,這次LZ只是羅列一下hotspot JVM中垃圾蒐集器相關的重點參數,以及各個參數的解釋。廢話不多說,這就開始吧。

垃圾蒐集器選擇參數

UseSerialGC:開啟此參數使用serial & serial old蒐集器(client模式預設值)。
UseParNewGC:開啟此參數使用ParNew & serial old蒐集器(不建議)。
UseConcMarkSweepGC:開啟此參數使用ParNew & CMS(serial old為替補)蒐集器。
UseParallelGC:開啟此參數使用parallel scavenge & parallel old蒐集器(server模式預設值)。
UseParallelOldGC:開啟此參數在年老代使用parallel old蒐集器(此參數在JDK1.5之後已無用)。

JVM各個記憶體區域大小相關參數

Xms:堆的初始值。預設為實體記憶體的1/64,最大不超1G。
Xmx:堆的最大值。預設為實體記憶體的1/4,最大不超1G。
Xmn:新生代的大小。
Xss:線程棧大小。
PermSize:永久代初始大小。預設為實體記憶體的1/64,最大不超1G。
MaxPermSize:永久代最大值。預設為實體記憶體的1/4,最大不超1G。
NewRatio:新生代與年老代的比例。例如為3,則新生代佔堆的1/4,年老代佔3/4。
SurvivorRatio:新生代中調整eden區與survivor區的比例,預設為8,即eden區為80%的大小,兩個survivor分別為10%的大小。 (備註:這個參數設定是講解複製演算法那一章中,解決複製演算法記憶體減半的辦法。eden區即是複製演算法一章中80%的那部分,而survivor區則是兩個10%的那部分。預設為0,例如設為10M,則超過10M的物件將不在eden區分配,而直接進入年老代。
MaxTenuringThreshold:晉升老年代的最大年齡。預設為15,例如設為10,則物件在10次普通GC後將會被放入年老代。
DisableExplicitGC:停用System.gc()。

並行蒐集器參數

ParallelGCThreads:回收時開啟的執行緒數。預設與CPU個數相等。
GCTimeRatio:設定係統的吞吐量。例如設為99,則GC時間比為1/1+99=1%,也就是要求吞吐量為99%。若無法滿足會縮小新生代大小。
MaxGCPauseMillis:設定垃圾回收的最大停頓時間。若無法滿足設定值,則會優先縮小新生代大小,仍無法滿足的話則會犧牲吞吐量。

並發蒐集器參數

CMSInitiatingOccupancyFraction:觸發CMS收集器的記憶體比例。例如60%的意思就是說,當記憶體達到60%,就會開始進行CMS並發收集。
UseCMSCompactAtFullCollection:這個前面已經提過,用於在每一次CMS收集器清理垃圾後送一次內存整理。
CMSFullGCsBeforeCompaction:設定在幾次CMS垃圾收集後,觸發一次記憶體整理。

結束語

GC相關系列基本上就結束了,這篇文章只是做一個羅列,之後我們一起來進入虛擬機的源碼世界吧。

以上就是JVM記憶體管理------垃圾蒐集器參數精解的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn