1. 程式人生 > >jvm優化

jvm優化

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"



本文出自 “Linux” 博客,請務必保留此出處http://syklinux.blog.51cto.com/9631548/1942321

jvm優化