JVM的常用参数

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容