参考
堆内存相关配置
设置堆初始值
方式1: -Xms2g
方式2: -XX:InitialHeapSize=2048m
设置堆最大值
方式1:-Xmx4g
方式2:-XX:MaxHeapSize=4g
动态扩容堆内存,当xmx=xms时无效
-XX:MaxHeapFreeRatio=70 堆内存使用率大于70%时,进行扩张内存
动态缩放堆内存,当xmx=xms时无效
-XX:MinHeapFreeRatio=40 堆内存使用率大于40%时,进行缩放内存
新生代大小1g
-Xmn1g
新生代中2个survivor区与eden区大小比率,即survivor:eden = 1:6, 默认为1:8
-XX:SurvivorRatio=6
老年代大小= 堆内存-新生代内存 = xmx- xmn
方法区内存配置参数
初始化metaspace
-XX:MetaspaceSize=1m
最大值
-XX:MaxMetaspaceSize=2m
线程栈针内存配置参数
方式1:-Xss256k
方式2:-XX:ThreadStackSize=256k
GC策略
//并行执行的线程数
-XX:ParallelGCThreads=16
// 晋升到老年代的最小年龄
-XX:InitialTenuringTheshol=7
// 晋升到老年代的最大年龄
-XX:MaxTenuringThreshold=15
GC日志文件配置
// 需要生成文件夹
// 固定路径名称
-Xloggc:/data/gclog/gc.log
// 根据时间生成
-Xloggc:/data/everyday/gc-%t.log
// 滚动生成日志,先开启滚动日志功能
-XX:+UseGCLogFileRotation
// 滚动日志文件数
-XX:NumberOfGCLogFiles=4
// GC文件滚动大小
-XX:GCLogFileSize=100k
// 打印日志详情
-XX:+PrintGCDetails
-Xlog:gc* --version
// 打印gc和class相关的日志,日志级别为info
-Xlog:gc,class=info -version
// 打印gc和heap的info级别日志到日志文件,并把日中的进程和时间戳打印到文件上
-Xlog:gc,heap=info:file=/log/debug.%p.%t.log:t,um,hn,p,ti,l,tg -version
打印应用暂停时间
-XX:+PrintGCApplicationStoppedTime
每次GC后打印堆内存每个区域使用情况
-XX:+PrintHeapAtGC
OutOfMemory异常时输出文件
// 开启异常时输出功能
-XX:+HeapDumpOnOutOfMemoryError
// 异常时输出到指定文件
-XX:HeapDumpPath=/data/dump/jvm.dump
Full GC时生成dump文件
// Full GC前dump
-XX:+HeapDumpBeforeFullGC
// Full GC后dump
-XX:+HeapDumpAfterFullGC
// 指定文件
-XX:HeapDumpPath=e:\full_gc.log
辅助指令
查看或修改正在运行的JVM配置
jps 获取进程id
jinfo -flag MaxHeapSize 进程id
// 修改可修改的配置,有些配置当jvm启动后无法修改
jinfo -flag 配置 进程id
// 输出jvm所有参数
-XX:+PrintFlagsInitial