1、堆内存相关配置
设置堆初始值
指令1:-Xms2g
指令2:-XX:InitialHeapSize=2048m
设置堆最大值
指令1:-Xmx2g
指令2:-XX:MaxHeapSize=2048m
缩小堆内存的时机
-XX:MaxHeapFreeRatio=70
堆内存空闲率大于70时收缩堆内存,xms=xmx时该参数无效,默认值70
扩张堆内存的时机
-XX:MinHeapFreeRatio=40
堆内存空闲率小于40时扩张堆内存,xms=xmx时该参数无效,默认值40
新生代内存配置
指令1:-Xmn512m
指令2:-XX:MaxNewSize=512m
两个Survivor区和Eden区的占比
指令:-XX:SurvivorRatio=8
Eden区占新生代的8/10,两个Survivor区各占新生代的1/10
新生代和老年代的占比
-XX:NewRatio=4
老年代占整个堆的4/5,新生代占整个堆的1/5
2、方法区内存相关配置
设置Metaspace的初始值
-XX:MetaspaceSize
设置Metaspace的最大值
-XX:MaxMetaspaceSize
3、虚拟机栈内存相关配置
设置虚拟机栈最大值
指令1:-Xss256k
指令2:-XX:ThreadStackSize=256k
4、配置垃圾收集器
Serial垃圾收集器(新生代)
开启:-XX:+UseSerialGC
关闭:-XX:-UseSerialGC
新生代使用Serial,老年代则使用Serial Old
ParNew垃圾收集器(新生代)
开启-XX:+UseParNewGC
关闭-XX:-UseParNewGC
新生代使用ParNew,老年代则使用CMS
Parallel Scavenge垃圾收集器(新生代)
开启-XX:+UseParallelOldGC
关闭-XX:-UseParallelOldGC
新生代使用Parallel Scavenge,老年代则使用Parallel Old
Parallel Old垃圾收集器(老年代)
开启-XX:+UseParallelGC
关闭-XX:-UseParallelGC
CMS垃圾收集器(老年代)
开启-XX:+UseConcMarkSweepGC
关闭-XX:-UseConcMarkSweepGC
G1垃圾收集器
开启-XX:+UseG1GC
关闭-XX:-UseG1GC
5、GC策略配置
GC并行执行线程数
-XX:ParallelGCThreads=16
新生代可容纳的最大对象
-XX:PretenureSizeThreshold=1000000
大于此值的对象直接会分配到老年代,设置为0则没有限制
避免在Eden区和Survivor区发生大量的内存复制,该参数只对Serial和ParNew垃圾收集器有效,Parallel Scavenge并不认识该参数
进入老年代的GC年龄
进入老年代最小的GC年龄
-XX:InitialTenuringThreshol=7
新生代对象转换为老年代对象最小年龄值,默认值7,对象在坚持过一次Minor GC之后,年龄就加1
进入老年代最大的GC年龄
-XX:MaxTenuringThreshold=15
新生代对象转换为老年代对象最大年龄值,默认值15
6、GC日志信息配置
配置GC文件路径
-Xloggc:/data/gclog/gc.log
固定路径名称生成
-Xloggc:/home/GCEASY/gc-%t.log
根据时间生成
滚动生成日志
开启-XX:+UseGCLogFileRotation
关闭-XX:-UseGCLogFileRotation
-XX:NumberOfGCLogFiles=4
滚动GC日志文件数,默认0,不滚动
-XX:GCLogFileSize=100k
GC文件滚动大小
打印详细的GC日志
开启-XX:+PrintGCDetails
关闭-XX:-PrintGCDetails
打印应用暂停时间
开启 -XX:+PrintGCApplicationStoppedTime
关闭 -XX:-PrintGCApplicationStoppedTime
每次GC完成后,打印出JVM堆内存每个区域的使用情况
开启-XX:+PrintHeapAtGC
关闭-XX:-PrintHeapAtGC
打印存活实例年龄信息
开启 -XX:+PrintTenuringDistribution
关闭 -XX:-PrintTenuringDistribution
7、条件触发配置
抛出内存溢出错误时导出堆信息到指定文件
开启-XX:+HeapDumpOnOutOfMemoryError
关闭-XX:-HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/data/dump/jvm.dump
设置文件路径
在Full GC时生成dump文件
-XX:+HeapDumpBeforeFullGC
实现在Full GC前dump
-XX:+HeapDumpAfterFullGC
实现在Full GC后dump
-XX:HeapDumpPath=e:\dump
设置Dump保存的路径
转自:https://zhuanlan.zhihu.com/p/243064867