jvm優化

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_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8

    -server -Xms48g -Xmx48g -Xss1m -XX:PermSize=512m -XX:MaxPermSize=1024m

    -XX:NewSize=8g -XX:MaxNewSize=16g

    -XX:NewRatio=4 -XX:SurvivorRatio=4

    -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC

    -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ParallelCMSThreads=24

    -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime 

    -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" 



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