JVM經常使用參數
-XX:+<option> 啓用選項
-XX:-<option>不啓用選項
-XX:<option>=<number>
-XX:<option>=<string>
堆設置
-Xms :初始堆大小
-Xmx :最大堆大小
-Xmn:新生代大小。一般爲 Xmx 的 1/3 或 1/4。新生代 = Eden + 2 個 Survivor 空間。實際可用空間爲 = Eden + 1 個 Survivor,即 90%
-XX:NewSize=n :設置年輕代大小
-XX:NewRatio=n: 設置年輕代和年老代的比值。如:爲3,表示年輕代與年老代比值爲1:3,年輕代佔整個年輕代年老代和的1/4
-XX:SurvivorRatio=n :年輕代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:3,表示Eden:Survivor=3:2,一個Survivor區佔整個年輕代的1/5
-XX:PermSize=n 永久代(方法區)的初始大小
-XX:MaxPermSize=n :設置永久代大小
-Xss 設定棧容量;對於HotSpot來講,雖然-Xoss參數(設置本地方法棧大小)存在,但其實是無效的,由於在HotSpot中並不區分虛擬機和本地方法棧。
-XX:PretenureSizeThreshold (該設置只對Serial和ParNew收集器生效) 能夠設置進入老生代的大小限制
-XX:MaxTenuringThreshold=1(默認15)垃圾最大年齡 若是設置爲0的話,則年輕代對象不通過Survivor區,直接進入年老代. 對於年老代比較多的應用,能夠提升效率.若是將此值設置爲一個較大值,則年輕代對象會在Survivor區進行屢次複製,這樣能夠增長對象再年輕代的存活 時間,增長在年輕代即被回收的機率
該參數只有在串行GC時纔有效.
收集器設置
-XX:+UseSerialGC :設置串行收集器
-XX:+UseParallelGC :設置並行收集器
-XX:+UseParallelOldGC :設置並行年老代收集器
-XX:+UseConcMarkSweepGC :設置併發收集器
垃圾回收統計信息
-XX:+PrintHeapAtGC GC的heap詳情
-XX:+PrintGCDetails GC詳情
-XX:+PrintGCTimeStamps 打印GC時間信息
-XX:+PrintTenuringDistribution 打印年齡信息等
-XX:+HandlePromotionFailure 老年代分配擔保(true or false)
-Xloggc:gc.log 指定日誌的位置
並行收集器設置
-XX:ParallelGCThreads=n :設置並行收集器收集時使用的CPU數。並行收集線程數。
-XX:MaxGCPauseMillis=n :設置並行收集最大暫停時間
-XX:GCTimeRatio=n :設置垃圾回收時間佔程序運行時間的百分比。公式爲1/(1+n)
併發收集器設置
-XX:+CMSIncrementalMode :設置爲增量模式。適用於單CPU狀況。
-XX:ParallelGCThreads=n :設置併發收集器年輕代收集方式爲並行收集時,使用的CPU數。並行收集線程數。
其餘
-XX:PermSize=10M和-XX:MaxPermSize=10M限制方法區大小。
-XX:MaxDirectMemorySize=10M指定DirectMemory(直接內存)容量,若是不指定,則默認與JAVA堆最大值(-Xmx指定)同樣。
-XX:+HeapDumpOnOutOfMemoryError 能夠讓虛擬機在出現內存溢出異常時Dump出當前的內存堆轉儲快照(.hprof文件)以便時候進行分析(好比Eclipse Memory Analysis)。 java
這裏附一個實例:併發
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8less
-server -Xms48g -Xmx48g -Xss1m -XX:PermSize=512m -XX:MaxPermSize=1024mide
-XX:NewSize=8g -XX:MaxNewSize=16gspa
-XX:NewRatio=4 -XX:SurvivorRatio=4線程
-XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC日誌
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ParallelCMSThreads=24orm
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime server
-XX:+PrintHeapAtGC -Xloggc:/data/log/weimob_keyword/gc.log對象
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/log/weimob_keyword/heapdump.bin
-XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:+ScavengeBeforeFullGC
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=9 -XX:+ExplicitGCInvokesConcurrent
-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75"