JVM 之 AdaptiveSizePolicy 参数

本文介绍了JDK1.8中AdaptiveSizePolicy(自适应大小策略)的使用方式及注意事项。该策略能够自动调整Eden和Survivor区的大小,提高垃圾回收效率。但在特定场景下可能导致Survivor区过小,进而引发频繁的Full GC。文章还提供了关闭此策略的方法。

AdaptiveSizePolicy 简介

AdaptiveSizePolicy(自适应大小策略) :
JDK 1.8 默认使用 UseParallelGC 垃圾回收器,该垃圾回收器默认启动了 AdaptiveSizePolicy,会根据GC的情况自动计算计算 Eden、From 和 To 区的大小。

配置:

开启:-XX:+UseAdaptiveSizePolicy
关闭:-XX:-UseAdaptiveSizePolicy

注意事项:
1、在 JDK 1.8 中,如果使用 CMS,无论 UseAdaptiveSizePolicy 如何设置,都会将 UseAdaptiveSizePolicy 设置为 false;不过不同版本的JDK存在差异;
2、UseAdaptiveSizePolicy不要和SurvivorRatio参数显示设置搭配使用,一起使用会导致参数失效;
3、由于AdaptiveSizePolicy会动态调整 Eden、Survivor 的大小,有些情况存在Survivor 被自动调为很小,比如十几MB甚至几MB的可能,这个时候YGC回收掉 Eden区后,还存活的对象进入Survivor 装不下,就会直接晋升到老年代,导致老年代占用空间逐渐增加,从而触发FULL GC,如果一次FULL GC的耗时很长(比如到达几百毫秒),那么在要求高响应的系统就是不可取的。

对于面向外部的大流量、低延迟系统,不建议启用此参数,建议关闭该参数。

jmap -heap [PID]
在这里插入图片描述
From 和 To 区都比较小,只有 0.5M。容量比较小,可以看到 Eden、From、To 之间的比例不是默认的 8:1:1。
使用的是 JDK 1.8 的默认回收算法。

jinfo -flags pid 可以查看运行中的JVM参数。
在这里插入图片描述

使用 CMS 垃圾回收器。
CMS 默认关闭 AdaptiveSizePolicy。
配置参数:-XX:+UseConcMarkSweepGC
在这里插入图片描述
jinfo -flag UseAdaptiveSizePolicy pid
在这里插入图片描述

JVM GC 之「AdaptiveSizePolicy」实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值