
堆配置
-Xms :初始堆大小
-Xmx :最大堆大小
-XX:NewSize=n :設(shè)置年輕代大小
-XX:NewRatio=n: 設(shè)置年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代占整個(gè)年輕代年老代和的1/4
-XX:SurvivorRatio=n :年輕代中Eden區(qū)與兩個(gè)Survivor區(qū)的比值。注意Survivor區(qū)有兩個(gè)。如:3,表示Eden:Survivor=3:2,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/5
-XX:MaxPermSize=n :設(shè)置持久代大小
-Xmn,設(shè)置JVM年輕代內(nèi)存;比如 -Xmn1G:設(shè)置年輕代內(nèi)存為 1 G
-XX:HeapDumpOnOutOfMemoryError,設(shè)置虛擬機(jī)出現(xiàn)內(nèi)存溢出異常時(shí) Dump 出當(dāng)前內(nèi)存堆轉(zhuǎn)儲(chǔ)快照,以便事后進(jìn)行分析。
(Dump 文件存放于項(xiàng)目根目錄,*.hprof 文件,)
棧配置
-Xss256K: 設(shè)置每個(gè)線程的運(yùn)行時(shí)棧的大小為 256K
并行收集器配置
-XX:ParallelGCThreads=n :設(shè)置并行收集器收集時(shí)使用的CPU數(shù)。并行收集線程數(shù)
-XX:MaxGCPauseMillis=n :設(shè)置并行收集最大暫停時(shí)間
-XX:GCTimeRatio=n :設(shè)置垃圾回收時(shí)間占程序運(yùn)行時(shí)間的百分比。公式為1/(1+n)
并發(fā)收集器配置
-XX:+CMSIncrementalMode :設(shè)置為增量模式。適用于單CPU情況
-XX:ParallelGCThreads=n :設(shè)置并發(fā)收集器年輕代收集方式為并行收集時(shí),使用的CPU數(shù)。并行收集線程數(shù)
永久代配置
JDK8開始,永久代(PermGen)的概念被廢棄掉了,取而代之的是一個(gè)稱為Metaspace的存儲(chǔ)空間。Metaspace使用的是本地內(nèi)存,而不是堆內(nèi)存,也就是說在默認(rèn)情況下Metaspace的大小只與本地內(nèi)存大小有關(guān)。
-XX:MetaspaceSize=N
這個(gè)參數(shù)是初始化的Metaspace大小,該值越大觸發(fā)Metaspace GC的時(shí)機(jī)就越晚。隨著GC的到來(lái),虛擬機(jī)會(huì)根據(jù)實(shí)際情況調(diào)控Metaspace的大小,可能增加上線也可能降低。在默認(rèn)情況下,這個(gè)值大小根據(jù)不同的平臺(tái)在12M到20M浮動(dòng)。使用java -XX:+PrintFlagsInitial命令查看本機(jī)的初始化參數(shù),-XX:Metaspacesize為21810376B(大約20.8M)。
-XX:MaxMetaspaceSize=N
這個(gè)參數(shù)用于限制Metaspace增長(zhǎng)的上限,防止因?yàn)槟承┣闆r導(dǎo)致Metaspace無(wú)限的使用本地內(nèi)存,影響到其他程序。在本機(jī)上該參數(shù)的默認(rèn)值為4294967295B(大約4096MB)。
-XX:MinMetaspaceFreeRatio=N
當(dāng)進(jìn)行過Metaspace GC之后,會(huì)計(jì)算當(dāng)前Metaspace的空閑空間比,如果空閑比小于這個(gè)參數(shù),那么虛擬機(jī)將增長(zhǎng)Metaspace的大小。在本機(jī)該參數(shù)的默認(rèn)值為40,也就是40%。設(shè)置該參數(shù)可以控制Metaspace的增長(zhǎng)的速度,太小的值會(huì)導(dǎo)致Metaspace增長(zhǎng)的緩慢,Metaspace的使用逐漸趨于飽和,可能會(huì)影響之后類的加載。而太大的值會(huì)導(dǎo)致Metaspace增長(zhǎng)的過快,浪費(fèi)內(nèi)存。
-XX:MaxMetasaceFreeRatio=N
當(dāng)進(jìn)行過Metaspace GC之后, 會(huì)計(jì)算當(dāng)前Metaspace的空閑空間比,如果空閑比大于這個(gè)參數(shù),那么虛擬機(jī)會(huì)釋放Metaspace的部分空間。在本機(jī)該參數(shù)的默認(rèn)值為70,也就是70%。
-XX:MaxMetaspaceExpansion=N
Metaspace增長(zhǎng)時(shí)的最大幅度。在本機(jī)上該參數(shù)的默認(rèn)值為5452592B(大約為5MB)。
-XX:MinMetaspaceExpansion=N
Metaspace增長(zhǎng)時(shí)的最小幅度。在本機(jī)上該參數(shù)的默認(rèn)值為340784B(大約330KB為)。
GC日志輸出配置參數(shù)
-XX:+PrintGC 輸出GC日志
-XX:+PrintGCDetails 輸出GC的詳細(xì)日志
-XX:+PrintGCTimeStamps 輸出GC的時(shí)間戳(以基準(zhǔn)時(shí)間的形式)
-XX:+PrintGCDateStamps 輸出GC的時(shí)間戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在進(jìn)行GC的前后打印出堆的信息
-Xloggc:E:/logs/jvmlog/gc.log 日志文件的輸出路徑
-verbose:gc -XX:+PrintGCDetails 打印到控制臺(tái)
常用配置:
-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCTimeStamps
-verbose:gc -XX:+PrintGCDetails -XX:SurvivorRatio=8