JVM常用配置參數和調優策略

堆內存配置參數

參數 描述
-Xms JVM初始化堆內存大小
-Xmx 堆內存最大值
-Xmn 堆內存年輕代大小,剩下爲老年代大小
-XX:PermGen 永久代初始化大小(JDK1.8開始放棄了永久代)
-XX:MaxPermGen 永久代最大值
-XX:SurvivorRatio Eden Space和Survivor Space空間的比例
-XX:NewRatio 設置老年代和年輕代空間的比例,默認值爲2

GC配置參數

參數 描述
-XX:+UseSerialGC 串行,年輕代和老年代都使用串行,使用複製算法回收,邏輯簡單,無線程切換開銷
-XX:+UseParallelGC 並行,年輕代使用Parallel scavenge回收算法,會產生多個線程並行回收。通過-XX:ParallelGCThreads=n參數指定線程數,默認等於CPU核數;老年代單線程串行。
-XX:+UseParallelOldGC 並行,不過年輕代和老年代都使用多線程並行收集
-XX:+UseConcMarkSweepGC 併發,短暫停頓的併發收集。年輕代可以使用普通的或者Parallel垃圾收集算法,由參數-XX:+UsePerNewGC來控制;老年代只能使用Concurrent Mark Sweep算法。
-XX:+UseG1GC 並行的,併發的,增量式壓縮,短暫停頓的垃圾收集器。不區分年輕代老年代,把堆空間劃分爲多個大小相等的區域,當執行GC時,會優先收集存活對象較少的區域,因此叫“Garbage First”。

綜上所述,目前收集器有串行、並行和併發三種,對大內存的應用而言,串行的性能太低,因此常用的主要是並行和併發兩種,具體由UseParallelGC和UseConcMarkSweep參數指定。
通常年輕代回收只可選擇並行收集器(耗時),老年代選擇併發收集器(耗CPU)。

常用的配置

參數設置 描述
-Xms4800M 設置初始化堆內存大小
-Xmx4800M 設置最大堆內存大小(一般與初始堆內存大小相等)
-Xmn1800M
-Xss512k
-XX:+UseStringCache
-XX:+UseConcMarkSweepGC
-XX:+UsePermNewGC
-XX:+ParallelGCThreads=4
-XX:+CMSClassUploadingEnabled 允許對類的元數據進行清理
-XX:+DisableExplicitGC 禁止顯式的GC
-XX:+CMSInitiatingOccupancyOnly 表示只有達到閥值以後才進行CMS回收
-XX:+CMSInitiatingOccupancyFraction=68 設置CMS在老年代的回收閥值爲68%
-verbose:gc 輸出虛擬機GC詳情
-XX:+PrintGCDetails 打印GC詳情日誌
-XX:+PrintGCDateStamps 打印GC的耗時
-XX:+PrintTenuringDistribution 打印Tenuring年齡信息
-XX:+HeapDumpOnOutMermoryError 當拋出OOM時進行HeapDump
-XX:HeapDumpPath=/home/admin/logs 指定HeapDump的文件路徑

JVM調優

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