JVM参数设置调优

JVM一些参数说明:

-Xms:分配JVM堆初始化大小

-Xmx:分配JVM堆最大的大小

-Xmn:分配JVM新生代大小

-XX:+UseConcMarkSweepGC:老年代垃圾回收器使用CMS垃圾回收器

-XX:+UseG1GC:设置使用G1垃圾回收器

-XX:G1HeapRegionSize:设置G1垃圾回收器的Region大小

-XX:MaxTenuringThreshold:老年代晋升年龄,默认15

-XX:MaxGCPauseMillis:设置一次GC停顿的时间,单位ms

-XX:MetaspaceSize:元数据空间大小

-XX:MaxMetaspaceSize:元数据空间最大大小

-XX:CMSInitiatingOccupancyFraction:老年代使用到何种程度时开始触发并发标记清除(CMS)垃圾收集

-XX:CMSFullGCsBeforeCompaction:多少次CMS垃圾回收后执行一次FullGC进行空间压缩

-XX:+HeapDumpOnOutOfMemoryError:当JVM遇到OutOfMemoryError时自动生成堆转储文件(dump文件)

-XX:HeapDumpmpPath:dump文件存储路径

-Xloggc:打印gc日志路径

-XX:+PrintGC:输出GC日志

-XX:+PrintGCDetails:输出GC详细日志

-XX:+PrintHeapAtGC:在进行GC前后打印堆的信息

JVM参数调优:

1.-Xms 和 -Xmx 保持一致避免GC内存伸缩引起的性能问题

2.-Xmn设置为-Xms的一半,为的是保证大部分对象都留在新生代,仅通过minor GC就可以把对象回收,同时也可以避免大对象直接分配到老年代

3.-Xms 和 -Xmx 设置的值一般为物理内存的1/4,可根据自身项目要求进行调整

4.-XX:+UseConcMarkSweepGC:设置老年代垃圾回收器使用CMS垃圾回收器,提升垃圾回收效率

5.-XX:+UseG1GC:设置使用G1垃圾回收器,如果堆内存设置的是8G以上且对停顿时间有要求推荐使用G1垃圾回收器(jdk必须是1.7以上版本),其中-XX:MaxGCPauseMillis 用于设置垃圾回收停顿时间

6.-XX:G1HeapRegionSize:设置G1垃圾回收器的Region大小

7.-XX:MaxTenuringThreshold:老年代晋升年龄,默认15,该值主要影响新生代对象成为老年代对象的快慢问题,如果该值过大会导致新生代对象迟迟不能成为老年代对象,而占用新生代空间

8.-XX:MetaspaceSize:元数据空间大小,保存java的Class相关信息以及常量池,一般建议128或者256M,可根据实际项目需要调整,如果项目用到的动态代理十分多,可以加大这个参数

10.-XX:CMSInitiatingOccupancyFraction:建议值为70,即老年代占用比达到70%时开启CMS回收

11.-XX:CMSFullGCsBeforeCompaction:这个值推荐设置10,以防止过多的内存碎片产生

12.-XX:+HeapDumpOnOutOfMemoryError:建议加上,用于后续帮助诊断内存泄露或优化内存

13.-XX:HeapDumpmpPath:建议设置一下路径即可,不用设置文件名,名称自动会以java_pid{进程号}.hprof命名

14.-Xloggc:如果需要gc日志可开启收集

JVM调优推荐设置:

针对JVM一般性设置,推荐

-Xms512m

-Xmx512m

-Xmn256m

-XX:MetaspaceSize=128m

-XX:MaxMetaspaceSize=128m

-XX:+UseConcMarkSweepGC

-XX:MaxTenuringThreshold=8

-XX:CMSInitiatingOccupancyFraction=70

-XX:CMSFullGCsBeforeCompaction=10

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=./

针对项目对JVM内存有一定要求的场景,推荐

-Xms2048m

-Xmx2048m

-Xmn1024m

-XX:MetaspaceSize=256m

-XX:MaxMetaspaceSize=256m

-XX:+UseConcMarkSweepGC

-XX:MaxTenuringThreshold=8

-XX:CMSInitiatingOccupancyFraction=70

-XX:CMSFullGCsBeforeCompaction=10

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=./

针对项目对JVM内存有超高要求并且JVM堆内存可以设置到8G的场景,推荐

-Xms8192m

-Xmx8192m

-Xmn4096M

-XX:MetaspaceSize=512m

-XX:MaxMetaspaceSize=512m

-XX:+UseG1GC

-XX:G1HeapRegionSize=2m

-XX:MaxGCPauseMillis=100

-XX:MaxTenuringThreshold=8

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=./

如果需要收集GC日志可以添加:

-Xloggc:./gc.log

如果需要打印GC日志可以添加:

-XX:+PrintGCDetails

-XX:+PrintHeapAtGC

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值