JVM 参数配置

参考

堆内存相关配置

设置堆初始值
方式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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容