-Xms |
初始堆大小 |
物理內(nèi)存的1/64(<1GB) 默認(rèn)(MinHeapFreeRatio參數(shù)可以調(diào)整)空余堆內(nèi)存小于40%時辈毯,JVM就會增大堆直到-Xmx的最大限制 |
-Xmx |
最大堆大小 |
物理內(nèi)存的1/4(<1GB) 默認(rèn)(MaxHeapFreeRatio參數(shù)可以調(diào)整)空余堆內(nèi)存大于70%時坝疼,JVM會減少堆直到 -Xms的最小限制 |
-Xmn |
新生代大小(jdk 1.4或以上版本) |
增大新生代后,將會減小老年代大小漓摩。此值對系統(tǒng)性能影響較大裙士。Sun官方推薦配置為整個堆的3/8 |
-Xss |
每個線程的堆棧大小 |
JDK5.0以后每個線程堆棧大小為1M,以前每個線程堆棧大小為256K管毙,可以帶 K, M 或 G單位 |
-XX:ThreadStackSize |
同上 |
0代表使用默認(rèn)值腿椎,不能帶單位 |
-XX:PermSize |
設(shè)置永久代初始值 |
物理內(nèi)存的1/64 |
-XX:MaxPermSize |
設(shè)置永久代最大值 |
物理內(nèi)存的1/4 |
-XX:NewRatio |
新生代(包括Eden和兩個Survivor區(qū))與老年代的比值(除去永久代) |
-XX:NewRatio=4表示新生代與老年代所占比值為1:4桌硫,新生代占整個堆棧的1/5,Xms=Xmx并且設(shè)置了Xmn的情況下啃炸,該參數(shù)不需要進(jìn)行設(shè)置铆隘。 |
-XX:SurvivorRatio |
Eden區(qū)與Survivor區(qū)的大小比值 |
設(shè)置為8,則兩個Survivor區(qū)與一個Eden區(qū)的比值為2:8,一個Survivor區(qū)占整個新生代的1/10 |
-XX:LargePageSizeInBytes |
內(nèi)存頁的大小不可設(shè)置過大南用, 會影響Perm的大小 |
=128m |
-XX:+UseFastAccessorMethods |
原始類型的快速優(yōu)化 |
/ |
-XX:+DisableExplicitGC |
關(guān)閉System.gc() |
這個參數(shù)需要嚴(yán)格的測試 |
-XX:MaxTenuringThreshold |
垃圾最大年齡 |
如果設(shè)置為0的話膀钠,則新生代對象不經(jīng)過Survivor區(qū),直接進(jìn)入老年代裹虫。對于老年代比較多的應(yīng)用肿嘲,可以提高效率。如果將此值設(shè)置為一個較大值筑公,則新生代對象會在Survivor區(qū)進(jìn)行多次復(fù)制雳窟,這樣可以增加對象再新生代的存活時間,增加在新生代即被回收的概率匣屡,該參數(shù)只有在串行GC時才有效 |
-XX:+AggressiveOpts |
加快編譯 |
/ |
-XX:+UseBiasedLocking |
鎖機(jī)制的性能改善 |
/ |
-Xnoclassgc |
禁用垃圾回收 |
/ |
-XX:SoftRefLRUPolicyMSPerMB |
每兆堆空閑空間中SoftReference的存活時間 |
1s |
-XX:PretenureSizeThreshold |
對象超過多大是直接在老年代分配 |
新生代采用Parallel Scavenge GC時無效封救,另一種直接在老年代分配的情況是大的數(shù)組對象,且數(shù)組中無外部引用對象. |
-XX:TLABWasteTargetPercent |
TLAB占eden區(qū)的百分比 |
1% |
-XX:+CollectGen0First |
FullGC時是否先YGC |
false |
-XX:+UseParallelGC |
Full GC采用parallel MSC |
見[GC參數(shù)][1]
|
-XX:+UseParNewGC |
設(shè)置新生代為并行收集 |
可與CMS收集同時使用捣作,JDK 5.0以上誉结,JVM會根據(jù)系統(tǒng)配置自行設(shè)置,所以無需再設(shè)置此值 |
-XX:ParallelGCThreads |
并行收集器的線程數(shù) |
此值最好配置與處理器數(shù)目相等券躁,同樣適用于CMS |
-XX:+UseParallelOldGC |
老年代垃圾收集方式為并行收集(Parallel Compacting) |
這個是JAVA 6出現(xiàn)的參數(shù)選項 |
-XX:MaxGCPauseMillis |
每次新生代垃圾回收的最長時間(最大暫停時間) |
如果無法滿足此時間惩坑,JVM會自動調(diào)整新生代大小,以滿足此值. |
-XX:+UseAdaptiveSizePolicy |
自動選擇新生代區(qū)大小和相應(yīng)的Survivor區(qū)比例 |
設(shè)置此選項后嘱朽,并行收集器會自動選擇新生代區(qū)大小和相應(yīng)的Survivor區(qū)比例旭贬,以達(dá)到目標(biāo)系統(tǒng)規(guī)定的最低相應(yīng)時間或者收集頻率等怔接,此值建議使用并行收集器時搪泳,一直打開 |
-XX:GCTimeRatio |
設(shè)置垃圾回收時間占程序運(yùn)行時間的百分比 |
公式為1/(1+n) |
-XX:+ScavengeBeforeFullGC |
Full GC前調(diào)用YGC |
true |
-XX:+UseConcMarkSweepGC |
使用CMS內(nèi)存收集 |
測試中配置這個以后, -XX:NewRatio=4的配置失效了扼脐,原因不明岸军,所以此時新生代大小最好用-Xmn設(shè)置 |
-XX:+AggressiveHeap |
試圖是使用大量的物理內(nèi)存 |
長時間大內(nèi)存使用的優(yōu)化,能檢查計算資源(內(nèi)存瓦侮, 處理器數(shù)量艰赞,至少需要256MB內(nèi)存 |
-XX:CMSFullGCsBeforeCompaction |
多少次后進(jìn)行內(nèi)存壓縮 |
由于并發(fā)收集器不對內(nèi)存空間進(jìn)行壓縮,整理肚吏,所以運(yùn)行一段時間以后會產(chǎn)生“碎片”方妖,使得運(yùn)行效率降低 |
-XX:+CMSParallelRemarkEnabled |
降低標(biāo)記停頓 |
/ |
-XX+UseCMSCompactAtFullCollection |
在FullGC的時候?qū)夏甏膲嚎s |
CMS是不會移動內(nèi)存的, 因此這個非常容易產(chǎn)生碎片罚攀,導(dǎo)致內(nèi)存不夠用党觅,因此內(nèi)存的壓縮這個時候就會被啟用雌澄。增加這個參數(shù)是個好習(xí)慣”埃可能會影響性能镐牺,但是可以消除碎片 |
-XX:+UseCMSInitiatingOccupancyOnly |
使用手動定義初始化定義開始CMS收集 |
禁止hostspot自行觸發(fā)CMS GC |
-XX:CMSInitiatingOccupancyFraction=70 |
使用cms作為垃圾回收使用70%后開始CMS收集 |
該值的設(shè)置需要滿足以下公式CMSInitiatingOccupancyFraction計算公式 |
-XX:CMSInitiatingPermOccupancyFraction |
設(shè)置Perm Gen使用到達(dá)多少比率時觸發(fā) |
92 |
-XX:+CMSIncrementalMode |
設(shè)置為增量模式 |
用于單CPU情況 |
-XX:+CMSClassUnloadingEnabled |
永久代CMS方式GC |
/ |
-XX:+PrintGC |
GC日志輸出 |
和-verbose:gc一樣 |
-XX:+PrintGCDetails |
同上 |
更詳細(xì) |
-XX:+PrintGCTimeStamps |
輸出GC的時間戳 |
配合上述PrintGC參數(shù)使用,或者寫成-XX:+PrintGC:PrintGCTimeStamps類似的 |
-XX:+PrintGC:PrintGCTimeStamps |
/ |
可與-XX:+PrintGC -XX:+PrintGCDetails混合使用 |
-XX:+PrintGCApplicationStoppedTime |
打印垃圾回收期間程序暫停的時間魁莉〔墙В可與上面混合使用 |
輸出形式:Total time for which application threads were stopped: 0.0468229 seconds |
-XX:+PrintGCApplicationConcurrentTime |
打印每次垃圾回收前,程序未中斷的執(zhí)行時間 |
可與上面混合使用旗唁,輸出形式:Application time: 0.5291524 seconds |
-XX:+PrintHeapAtGC |
打印GC前后的詳細(xì)堆棧信息 |
/ |
-Xloggc:filename |
把相關(guān)日志信息記錄到文件以便分析 |
與上面幾個配合使用 |
-XX:+PrintClassHistogram |
在控制臺按下Ctrl+Break后畦浓,打印類的信息 |
/ |
-XX:+PrintClassHistogramBeforeFullGC |
FullGC前打印類信息 |
/ |
-XX:+PrintTLAB |
查看TLAB空間的使用情況 |
/ |
XX:+PrintTenuringDistribution |
查看每次minor GC后新的存活周期的閾值 |
/ |
-ea |
開啟assert斷言 |
/ |
-Xprof |
性能診斷 |
/ |
-Xrunhprof |
性能診斷 |
/ |
-XX:+TraceClassLoading |
打印類加載過程的信息 |
類似 [Loaded java.util.AbstractList$Itr from /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/rt.jar] |
-XX:+TraceClassUnloading |
打印類卸載的過程信息 |
/ |
Xbootclasspath |
指定加載不需要校驗(yàn)的類 |
跳過必要的類加載前的校驗(yàn),能夠減少加載時間检疫,但是不安全 |
-XX:+PrintCompilation |
打印Hotspot使用JIT 編譯的方法名稱 |
/ |
-XX:+HeapDumpOnOutOfMemoryError |
OM時生成heap dump |
默認(rèn)輸出在存放類文件的根文件夾 |
-XX:HeapDumpPath |
設(shè)置輸出OM dump文件路徑 |
配合-XX:+HeapDumpOnOutOfMemoryError使用 |