JVM------參數詳解

內存相關
選項 參數詳解 默認值
-Xms 初始堆大小 –
-Xmx 最大堆大小 –
-Xmn 年輕代大小(1.4or lator)整個JVM內存大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小爲64m,所以增大年輕代後,將會減小年老代大小。此值對系統性能影響較大,Sun官方推薦配置爲整個堆的3/8 –
-XX:newSize 表示新生代初始內存的大小,應該小於 -Xms的值 –
-XX:NewRatio 設置年輕代和年老代的比值。如:爲3,表示年輕代與年老代比值爲1:3,年輕代佔整個年輕代年老代和的1/4 –
-XX:MaxNewSize 年輕代最大值(for 1.3/1.4) –
-XX:PermSize 設置持久代(perm gen)初始值 –
-XX:MaxPermSize 設置持久代最大值 –
-Xss 每個線程的堆棧大小 –
-XX:ThreadStackSize – --
-XX:SurvivorRatio Eden區與Survivor區的大小比值, 設置爲8,則兩個Survivor區與一個Eden區的比值爲2:8,一個Survivor區佔整個年輕代的1/10 –
-XX:LargePageSizeInBytes 內存頁的大小不可設置過大, 會影響Perm的大小,基本沒用過 –
-XX:+UseFastAccessorMethods 原始類型的快速優化 1.7以後不建議使用,1.6之前默認打開的 –
-XX:+UseFastEmptyMethods 優化空方法,1.7以後不建議使用,1.6之前默認打開的 –
-XX:+DisableExplicitGC 關閉System.gc() –
-XX:MaxTenuringThreshold 設置垃圾最大年齡。如果設置爲0的話,則年輕代對象不經過Survivor區,直接進入年老代。對於年老代比較多的應用,可以提高效率。如果將此值設置爲一個較大值,則年輕代對象會在Survivor區進行多次複製,這樣可以增加對象再年輕代的存活時間,增加在年輕代即被回收的概率 –
-XX:+AggressiveOpts 加快編譯 –
-XX:+UseBiasedLocking 鎖機制的性能改善, 有偏見的鎖是使得鎖更偏愛上次使用到它線程。在非競爭鎖的場景下,即只有一個線程會鎖定對象,可以實現近乎無鎖的開銷。 默認開啓
-Xnoclassgc 禁用類垃圾回收 –
-XX:SoftRefLRUPolicyMSPerMB 每兆堆空閒空間中SoftReference的存活時間 默認是1S
-XX:PretenureSizeThreshold 對象超過多大是直接在舊生代分配,單位字節 新生代採用Parallel Scavenge GC時無效另一種直接在舊生代分配的情況是大的數組對象,且數組中無外部引用對象. –
-XX:+CollectGen0First FullGC時是否先YGC false
收集器相關
選項 參數詳解 默認值
-XX:+UseParallelGC 選擇垃圾收集器爲並行收集器。此配置僅對年輕代有效。可以同時並行多個垃圾收集線程,但此時用戶線程必須停止。 –
-XX:+UseParNewGC 設置年輕代收集器ParNew –
-XX:ParallelGCThreads Parallel並行收集器的線程數 –
-XX:+UseParallelOldGC 設置老年代的並行收集器是ParallelOld –
-XX:+UseG1GC 使用G1收集器 –
-XX:MaxGCPauseMillis 每次年輕代垃圾回收的最長時間(最大暫停時間) –
-XX:+UseAdaptiveSizePolicy 設置此選項後,並行收集器會自動選擇年輕代區大小和相應的Survivor區比例,以達到目標系統規定的最低相應時間或者收集頻率等,此值建議使用並行收集器時,一直打開. –
-XX:GCTimeRatio 設置垃圾回收時間佔程序運行時間的,百分比公式爲1/(1+n) –
-XX:+ScavengeBeforeFullGC Full GC前調用YGC true
-XX:+UseConcMarkSweepGC 使用CMS內存收集 –
-XX:+AggressiveHeap 試圖是使用大量的物理內存長時間大內存使用的優化,能檢查計算資源(內存, 處理器數量)至少需要256MB內存大量的CPU/內存, (在1.4.1在4CPU的機器上已經顯示有提升) –
-XX:CMSFullGCsBeforeCompaction 由於併發收集器不對內存空間進行壓縮,整理,所以運行一段時間以後會產生"碎片",使得運行效率降低.此值設置運行多少次GC以後對內存空間進行壓縮,整理 –
-XX:+CMSParallelRemarkEnabled 降低CMS標記停頓 –
-XX+UseCMSCompactAtFullCollection 在FULL GC的時候, 對年老代的壓縮,CMS是不會移動內存的, 因此, 這個非常容易產生碎片, 導致內存不夠用, 因此, 內存的壓縮這個時候就會被啓用。 增加這個參數是個好習慣。可能會影響性能,但是可以消除碎片 –
-XX:+UseCMSInitiatingOccupancyOnly 使用手動定義初始化定義開始CMS收集,禁止hostspot自行觸發CMS GC –
-XX:CMSInitiatingOccupancyFraction=70 使用cms作爲垃圾回收使用70%後開始CMS收集 –
-XX:CMSInitiatingPermOccupancyFraction 設置Perm Gen使用到達多少比率時觸發 –
-XX:+CMSIncrementalMode 設置爲增量模式 –
-XX:CMSTriggerRatio CMSInitiatingOccupancyFraction = (100 - MinHeapFreeRatio) + (CMSTriggerRatio * MinHeapFreeRatio / 100) 處罰cms收集的比例 –
-XX:MinHeapFreeRatio java堆中空閒量佔的最小比例 –
-XX:+CMSClassUnloadingEnabled 如果你啓用了CMSClassUnloadingEnabled ,垃圾回收會清理持久代,移除不再使用的classes。這個參數只有在 UseConcMarkSweepGC 也啓用的情況下才有用。參數如下: –
輔助信息

選項 參數詳解 默認值
-XX:+PrintGC 輸出形式:[GC 118250K->113543K(130112K), 0.0094143 secs]Full GC 121376K->10414K(130112K), 0.0650971 secs] –
-XX:+PrintGCDetails – --
-XX:+PrintGCTimeStamps – --
-XX:+PrintGC:PrintGCTimeStamps – --
-XX:+PrintGCApplicationStoppedTime 打印垃圾回收期間程序暫停的時間.可與上面混合使用 –
-XX:+PrintGCApplicationConcurrentTime 打印每次垃圾回收前,程序未中斷的執行時間.可與上面混合使用 –
-XX:+PrintHeapAtGC 打印GC前後的詳細堆棧信息 –
-Xloggc:filename 把相關日誌信息記錄到文件以便分析.與上面幾個配合使用 –
-XX:+PrintClassHistogram 遇到Ctrl-Break後打印類實例的柱狀信息,與jmap -histo功能相同 –
-XX:+PrintTenuringDistribution 查看每次minor GC後新的存活週期的閾值 –
-XX:PrintHeapAtGC 打印GC前後的詳細堆棧信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章