2.JVM的參數配置
阿新 • • 發佈:2018-07-10
機器 sep use version out img ring com filesize
一、JVM參數類型
在生產環境中,一般情況下配置的參數有3種類型的:
- -X:非標準參數,不是每個虛擬機都實現了,例如-Xms2g
- -XX:非穩定性參數,例如-XX:NewSize=2g
使用方式有下面3種:
-XX:+<option> 開啟option參數
-XX:-<option> 關閉option參數
-XX:-<option>=<value> 將option參數的值設置為value - -D:用於自定義參數,設置的值可以通過System.getProperty(String name)方法獲取,例如:-Dlog.dir=/data/log
通過java -h命令,可以查看所有標準參數,常見的有-D、-version、-classpath
通過java -X命令,可以查看所有-X參數,常見的有-Xms、-Xmx、-Xss
二、內存管理參數
1、堆棧大小設置
參數 | 默認值 | 使用介紹 | 示例 |
---|---|---|---|
-Xms | 堆內存的1/64 | 堆的最小值 | -Xms6g |
-Xmx | 堆內存的1/4 | 堆的最大值 | -Xmx6g |
-Xss | 無 | 棧的大小 | -Xss1m |
-XX:NewSize | 無 | 堆中新生代的初始值 | -XX:NewSize=2g |
-XX:MaxNewSize | 無 | 堆中新生代的最大值 | -XX:MaxNewSize=4g |
-XX:PermSize | 無 | 方法區的初始值 | -XX:PermSize=256g |
-XX:MaxPermNewSize | 無 | 方法區的最大值 | -XX:MaxPermSize=512g |
-XX:NewRatio | 2 | 新生代和老年代的比值 | -XX:NewRatio=4 (表示新生代:老年代=1:4, 即新生代占堆的1/5) |
-XX:SurvivorRatio | 8 | 新生代中surviivor區和eden區的比值 | -XX:SurvivorRatio=8 (表示survivor:eden=1:8, 即一個survivor占新生代的1/10) |
-XX:+HeapDumpOnOutOfMemoryError | 默認關閉 | 發生OOM時自動dump堆轉儲文件 | |
-XX:HeapDumpPath | 無 | dump文件路徑 | -XX:HeapDumpPath=/data/log/heapdump.bin |
2、垃圾回收設置
參數 | 默認值 | 使用介紹 | 示例 |
---|---|---|---|
-XX:+UseSerialGC | Client模式的虛擬機默認開啟 | Client模式下,使用Serial+Serial Old的收集器組合進行垃圾回收 | |
-XX:+UseParNewGC | 默認關閉 | 使用ParNew+Serial Old的收集器組合進行垃圾回收 | |
-XX:+UseParallelGC | server模式的虛擬機默認開啟 | 使用Parallel Scavenge+Serial Old的收集器組合進行垃圾回收 | |
-XX:+UseParallelOldGC | 默認關閉 | 使用Parallel Scavenge+Parallel Old的收集器組合進行垃圾回收 | |
-XX:+UseConcMarkSweepGC | 默認關閉 | 使用ParNew+CMS+Serial Old的收集器組合進行垃圾回收。如果CMS收集器出現Concurrent Mode Failure,則Serial Old收集器將作為後備收集器 | -XX:+UseConcMarkSweepGC |
-XX:ParallelCMSThreads | 小於等於8個CPU時默認值為CPU的個數,多於8個時比CPU的數量少 | 設置GC時進行內存回收的線程數 | -XX:ParallelCMSThreads=2 |
-XX:+PrintGCDetails | 默認關閉 | 發生垃圾回收時打印內存回收日誌 | |
-XX:+PrintGCTimeStamps | 默認關閉 | 發生垃圾回收時打印回收時間 | |
-Xloggc | 無 | 設置GC記錄的文件 | Xloggc:/data/log/tomcat/gc.log |
-XX:+UseGCLogFileRotation | 默認關閉 | 啟用GC日誌文件的自動轉儲 | |
-XX:GCLogFileSize | 默認關閉 | 控制GC日誌文件的大小 | -XX:GCLogFileSize=1M |
3、多線程相關參數
參數 | 默認值 | 使用介紹 | 示例 |
---|---|---|---|
-XX:+UsedBiasedLocking | 默認開啟 | 是否使用偏向鎖 |
最後,給大家提供一個8核8G的機器常用的配置:
-Xms6g
-Xmx6g
-Xss1m
-XX:NewSize=2g
-XX:MaxNewSize=4g
-XX:NewRatio=4g
-XX:SurvivorRatio=8
-XX:+AggressiveOpts
-XX:+UseBiasedLocking
-XX:+UseConcMarkSweepGC
-XX:ParallelCMSThreads=2
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:/data/log/gc.log
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/data/log/heapdump.bin
-XX:+CMSParallelRemarkEnabled
-XX:+ScavengeBeforeFullGC
-XX:CMSInitiatingOccupancyFraction=75
2.JVM的參數配置