1、堆內(nèi)存相關(guān)配置
設置堆初始值
指令1:-Xms2g
指令2:-XX:InitialHeapSize=2048m
設置堆最大值
指令1:-Xmx2g
指令2:-XX:MaxHeapSize=2048m
縮小堆內(nèi)存的時機
-XX:MaxHeapFreeRatio=70
堆內(nèi)存空閑率大于70時收縮堆內(nèi)存,xms=xmx時該參數(shù)無效,默認值70
擴張堆內(nèi)存的時機
-XX:MinHeapFreeRatio=40
堆內(nèi)存空閑率小于40時擴張堆內(nèi)存,xms=xmx時該參數(shù)無效,默認值40
新生代內(nèi)存配置
指令1:-Xmn512m
指令2:-XX:MaxNewSize=512m
兩個Survivor區(qū)和Eden區(qū)的占比
指令:-XX:SurvivorRatio=8?
Eden區(qū)占新生代的8/10,兩個Survivor區(qū)各占新生代的1/10
新生代和老年代的占比
-XX:NewRatio=4?
老年代占整個堆的4/5,新生代占整個堆的1/5
2、方法區(qū)內(nèi)存相關(guān)配置
設置Metaspace的初始值
-XX:MetaspaceSize
設置Metaspace的最大值
-XX:MaxMetaspaceSize
3、虛擬機棧內(nèi)存相關(guān)配置
設置虛擬機棧最大值
指令1:-Xss256k
指令2:-XX:ThreadStackSize=256k
4、配置垃圾收集器
Serial垃圾收集器(新生代)
開啟:-XX:+UseSerialGC
關(guān)閉:-XX:-UseSerialGC
新生代使用Serial,老年代則使用Serial Old
ParNew垃圾收集器(新生代)
開啟-XX:+UseParNewGC
關(guān)閉-XX:-UseParNewGC
新生代使用ParNew,老年代則使用CMS
Parallel Scavenge垃圾收集器(新生代)
開啟-XX:+UseParallelOldGC
關(guān)閉-XX:-UseParallelOldGC
新生代使用Parallel Scavenge,老年代則使用Parallel Old
Parallel Old垃圾收集器(老年代)
開啟-XX:+UseParallelGC
關(guān)閉-XX:-UseParallelGC
CMS垃圾收集器(老年代)
開啟-XX:+UseConcMarkSweepGC
關(guān)閉-XX:-UseConcMarkSweepGC
G1垃圾收集器
開啟-XX:+UseG1GC
關(guān)閉-XX:-UseG1GC
5、GC策略配置
GC并行執(zhí)行線程數(shù)
-XX:ParallelGCThreads=16
新生代可容納的最大對象
-XX:PretenureSizeThreshold=1000000
大于此值的對象直接會分配到老年代,設置為0則沒有限制
避免在Eden區(qū)和Survivor區(qū)發(fā)生大量的內(nèi)存復制,該參數(shù)只對Serial和ParNew垃圾收集器有效,Parallel Scavenge并不認識該參數(shù)
進入老年代的GC年齡
進入老年代最小的GC年齡
-XX:InitialTenuringThreshol=7
新生代對象轉(zhuǎn)換為老年代對象最小年齡值,默認值7,對象在堅持過一次Minor GC之后,年齡就加1
進入老年代最大的GC年齡
-XX:MaxTenuringThreshold=15
新生代對象轉(zhuǎn)換為老年代對象最大年齡值,默認值15
6、GC日志信息配置
配置GC文件路徑
-Xloggc:/data/gclog/gc.log
固定路徑名稱生成
-Xloggc:/home/GCEASY/gc-%t.log
根據(jù)時間生成
滾動生成日志
開啟-XX:+UseGCLogFileRotation
關(guān)閉-XX:-UseGCLogFileRotation
-XX:NumberOfGCLogFiles=4
滾動GC日志文件數(shù),默認0,不滾動
-XX:GCLogFileSize=100k
GC文件滾動大小
打印詳細的GC日志
開啟-XX:+PrintGCDetails
關(guān)閉-XX:-PrintGCDetails
打印應用暫停時間
開啟 -XX:+PrintGCApplicationStoppedTime
關(guān)閉 -XX:-PrintGCApplicationStoppedTime
每次GC完成后,打印出JVM堆內(nèi)存每個區(qū)域的使用情況
開啟-XX:+PrintHeapAtGC
關(guān)閉-XX:-PrintHeapAtGC
打印存活實例年齡信息
開啟 -XX:+PrintTenuringDistribution
關(guān)閉 -XX:-PrintTenuringDistribution
7、條件觸發(fā)配置
拋出內(nèi)存溢出錯誤時導出堆信息到指定文件
開啟-XX:+HeapDumpOnOutOfMemoryError
關(guān)閉-XX:-HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/data/dump/jvm.dump
設置文件路徑
在Full GC時生成dump文件
-XX:+HeapDumpBeforeFullGC
實現(xiàn)在Full GC前dump
-XX:+HeapDumpAfterFullGC
實現(xiàn)在Full GC后dump
-XX:HeapDumpPath=e:\dump
設置Dump保存的路徑
轉(zhuǎn)自:https://zhuanlan.zhihu.com/p/243064867