35.JVM 参数(JVM中的各种参数及含义、收集器相关、PrintGC等各种辅助参数)
生活随笔
收集整理的這篇文章主要介紹了
35.JVM 参数(JVM中的各种参数及含义、收集器相关、PrintGC等各种辅助参数)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
35.JVM 參數(shù)
說下下面jvm參數(shù)含義:
35.1 內存相關
| -Xms | 初始堆大小 | – |
| -Xmx | 最大堆大小 | – |
| -Xmn | 年輕代大小(1.4or lator)整個JVM內存大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m,所以增大年輕代后,將會減小年老代大小。此值對系統(tǒng)性能影響較大,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區(qū)與Survivor區(qū)的大小比值, 設置為8,則兩個Survivor區(qū)與一個Eden區(qū)的比值為2:8,一個Survivor區(qū)占整個年輕代的1/10 | – |
| -XX:LargePageSizeInBytes | 內存頁的大小不可設置過大, 會影響Perm的大小,基本沒用過 | – |
| -XX:+UseFastAccessorMethods | 原始類型的快速優(yōu)化 1.7以后不建議使用,1.6之前默認打開的 | – |
| -XX:+UseFastEmptyMethods | 優(yōu)化空方法,1.7以后不建議使用,1.6之前默認打開的 | – |
| -XX:+DisableExplicitGC | 關閉System.gc() | – |
| -XX:MaxTenuringThreshold | 設置垃圾最大年齡。如果設置為0的話,則年輕代對象不經(jīng)過Survivor區(qū),直接進入年老代。對于年老代比較多的應用,可以提高效率。如果將此值設置為一個較大值,則年輕代對象會在Survivor區(qū)進行多次復制,這樣可以增加對象再年輕代的存活時間,增加在年輕代即被回收的概率 | – |
| -XX:+AggressiveOpts | 加快編譯 | – |
| -XX:+UseBiasedLocking | 鎖機制的性能改善, 有偏見的鎖是使得鎖更偏愛上次使用到它線程。在非競爭鎖的場景下,即只有一個線程會鎖定對象,可以實現(xiàn)近乎無鎖的開銷。 | 默認開啟 |
| -Xnoclassgc | 禁用類垃圾回收 | – |
| -XX:SoftRefLRUPolicyMSPerMB | 每兆堆空閑空間中SoftReference的存活時間 | 默認是1S |
| -XX:PretenureSizeThreshold | 對象超過多大是直接在舊生代分配,單位字節(jié) 新生代采用Parallel Scavenge GC時無效另一種直接在舊生代分配的情況是大的數(shù)組對象,且數(shù)組中無外部引用對象. | – |
| -XX:+CollectGen0First | FullGC時是否先YGC | false |
35.2 收集器相關
| -XX:+UseParallelGC | 選擇垃圾收集器為并行收集器。此配置僅對年輕代有效。可以同時并行多個垃圾收集線程,但此時用戶線程必須停止。 | – |
| -XX:+UseParNewGC | 設置年輕代收集器ParNew | – |
| -XX:ParallelGCThreads | Parallel并行收集器的線程數(shù) | – |
| -XX:+UseParallelOldGC | 設置老年代的并行收集器是ParallelOld | – |
| -XX:+UseG1GC | 使用G1收集器 | – |
| -XX:MaxGCPauseMillis | 每次年輕代垃圾回收的最長時間(最大暫停時間) | – |
| -XX:+UseAdaptiveSizePolicy | 設置此選項后,并行收集器會自動選擇年輕代區(qū)大小和相應的Survivor區(qū)比例,以達到目標系統(tǒng)規(guī)定的最低相應時間或者收集頻率等,此值建議使用并行收集器時,一直打開. | – |
| -XX:GCTimeRatio | 設置垃圾回收時間占程序運行時間的,百分比公式為1/(1+n) | – |
| -XX:+ScavengeBeforeFullGC | Full GC前調用YGC | true |
| -XX:+UseConcMarkSweepGC | 使用CMS內存收集 | – |
| -XX:+AggressiveHeap | 試圖是使用大量的物理內存長時間大內存使用的優(yōu)化,能檢查計算資源(內存, 處理器數(shù)量)至少需要256MB內存大量的CPU/內存, (在1.4.1在4CPU的機器上已經(jīng)顯示有提升) | – |
| -XX:CMSFullGCsBeforeCompaction | 由于并發(fā)收集器不對內存空間進行壓縮,整理,所以運行一段時間以后會產(chǎn)生"碎片",使得運行效率降低.此值設置運行多少次GC以后對內存空間進行壓縮,整理 | – |
| -XX:+CMSParallelRemarkEnabled | 降低CMS標記停頓 | – |
| -XX+UseCMSCompactAtFullCollection | 在FULL GC的時候, 對年老代的壓縮,CMS是不會移動內存的, 因此, 這個非常容易產(chǎn)生碎片, 導致內存不夠用, 因此, 內存的壓縮這個時候就會被啟用。 增加這個參數(shù)是個好習慣。可能會影響性能,但是可以消除碎片 | – |
| -XX:+UseCMSInitiatingOccupancyOnly | 使用手動定義初始化定義開始CMS收集,禁止hostspot自行觸發(fā)CMS GC | – |
| -XX:CMSInitiatingOccupancyFraction=70 | 使用cms作為垃圾回收使用70%后開始CMS收集 | – |
| -XX:CMSInitiatingPermOccupancyFraction | 設置Perm Gen使用到達多少比率時觸發(fā) | – |
| -XX:+CMSIncrementalMode | 設置為增量模式 | – |
| -XX:CMSTriggerRatio | CMSInitiatingOccupancyFraction = (100 - MinHeapFreeRatio) + (CMSTriggerRatio * MinHeapFreeRatio / 100) 處罰cms收集的比例 | – |
| -XX:MinHeapFreeRatio | java堆中空閑量占的最小比例 | – |
| -XX:+CMSClassUnloadingEnabled | 如果你啟用了CMSClassUnloadingEnabled ,垃圾回收會清理持久代,移除不再使用的classes。這個參數(shù)只有在 UseConcMarkSweepGC 也啟用的情況下才有用。參數(shù)如下: | – |
35.3 輔助信息
| -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 | 打印每次垃圾回收前,程序未中斷的執(zhí)行時間.可與上面混合使用 | – |
| -XX:+PrintHeapAtGC | 打印GC前后的詳細堆棧信息 | – |
| -Xloggc:filename | 把相關日志信息記錄到文件以便分析.與上面幾個配合使用 | – |
| -XX:+PrintClassHistogram | 遇到Ctrl-Break后打印類實例的柱狀信息,與jmap -histo功能相同 | – |
| -XX:+PrintTenuringDistribution | 查看每次minor GC后新的存活周期的閾值 | – |
| -XX:PrintHeapAtGC | 打印GC前后的詳細堆棧信息 | – |
總結
以上是生活随笔為你收集整理的35.JVM 参数(JVM中的各种参数及含义、收集器相关、PrintGC等各种辅助参数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 34.对象 GC,GC属性,影响GC的因
- 下一篇: 36.JVM内存分哪几个区,每个区的作用