一、8G以下jvm参数模板
垃圾回收器选择cms
1、关键参数
MetaspaceSize,MaxMetaspaceSize
大约是20.8MB。这个默认值是JVM内部设定的,过小的元空间导致oom
DisableExplicitGC
可用于禁止应用程序通过调用 System.gc() 方法来显式触发垃圾回
cms参数四剑客
-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction
1.老年代空间被占用到多少比例时,JVM就会尝试执行CMS垃圾收集
2.这个参数控制着CMS垃圾收集器的触发条件,它指示JVM应仅根据初始化占用阈值来启动CMS垃圾回收周期,而不是依赖于默认的启发式算法来决定何时启动回收
3.4两参数用来开启老年代空间压缩,以及收集了多少次进行压缩,减少内存碎片
2、参数模板
-XX:+PrintCommandLineFlags
-Xms4g
-Xmx4g
-Xmn2g
-Xss1m
-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=256m
-XX:SurvivorRatio=8
-XX:MaxDirectMemorySize=1g
-XX:+UseConcMarkSweepGC
-XX:+DisableExplicitGC
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=10
-XX:+AlwaysPreTouch
-XX:+HeapDumpOnOutOfMemoryError
-verbose:gc
-Xloggc:gc.log
-XX:GCLogFileSize=50M
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:NativeMemoryTracking=detail
二、8G以上jvm参数模板
垃圾回收器选择G1
1、关键参数
MaxDirectMemorySize
直接内存(也是我们说的堆外内存,unsafe分配的内存,或者DirectByteBuffer的api分配的内存
G1NewSizePercent 和G1MaxNewSizePpercent-XX:G1HeapRegionSize
如果没有其他约束,则G1在-XX:G1NewSizePercent 和 -XX:G1MaxNewSizePpercent确定的值之间自适应地调整年轻一代的大小,以满足暂停时间G1HeapRegionSize每个区域的大小,2幂次方大小
InitiatingHeapOccupancyPercent
这个参数用于控制堆内存占用的阈值,当达到这个阈值时,G1收集器会开始其垃圾回收过程
2、参数模板
-XX:+PrintCommandLineFlags
-Xms8g
-Xmx8g
-XX:MaxDirectMemorySize=512m
-Xss512k
-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=256m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=100
-XX:InitiatingHeapOccupancyPercent=50
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-Xloggc:gc.log
-verbose:gc
-XX:GCLogFileSize=50M
-XX:NativeMemoryTracking=summary