JVM垃圾收集相关的常用参数

JVM常规参数

-Xms:Java堆初始大小

-Xmx:Java堆最大值

-Xmn:Java堆新生代容量

-Xss:虚拟机栈内存容量

-XX:SurvivorRatio Eden与Survivor区的比例

-XX:PretenureSizeThreshold 晋升老年代对象大小,大于该值的对象直接在老年代分配,只对Serial和 ParNew有效

-XX:MaxTenuringThreshold 晋升老年代对象年龄

-Xoss:本地方法栈大小(HotSpot不区分虚拟机栈和本地方法栈,所以没有效果,栈容量由-Xss设定)

-XX:MaxPermSize 永久代内存上限(JDK7 将字符串常量池、静态变量等移至Java堆,JDK8 完全废弃永久代概念,永久代剩余内容转移到本地内存实现的元空间)

-XX:MaxMetaspaceSize 元空间最大值,默认为-1,不限制,即只受限于本地内存大小

-XX:MetaspaceSize 元空间初始大小,达到该值触发垃圾收集进行类型卸载,同时对该值调整,如果释放了大量空间就适当降低该值,如果释放了很少的空间,那么在不超过MaxMetaspaceSize的前提下提高该值

-XX:MinMetaspaceFreeRatio 在垃圾收集后控制最小的元空间剩余容量的百分比,减少因元空间不足导致的垃圾收集的频率

-XX:MaxMetaspaceFreeRatio 控制最大的元空间剩余容量的百分比

-XX:MaxDirectMemorySize 直接内存最大容量,默认与Java堆最大值一致

-XX:+/-UseTLAB 设定虚拟机是否使用TLAB(本地线程分配缓冲)

-XX:HandlePromotionFailure 设置是否允许担保失败,在发生Minor GC之前,检查老年代最大可用的连续空间是否大于新生代所有对象总空间,如果不成立,将检查这一参数设置,不允许担保失败,改为进行Full GC;允许担保失败,那么将检查老年代最大可用连续空间是否大于历次晋升到老年代对象的平均大小,如果大于,那么尽管有风险,将进行Minor GC,如果小于,改为进行Full GC(JDK6后该参数不再有影响)

-XX:FieldsAllocationStyle 虚拟机分配策略参数

-XX:CompactFields 默认为true,子类中较窄的变量允许插入父类变量的空隙中

-XX:+HeapDumpOnOutOfMemoryError 让虚拟机在出现内存溢出异常的时候Dump出当前的内存堆转储快照以便进行事后分析

-XX:+UseCondCardMark 是否开启卡表更新的条件判断,开启会增加一次额外判断的开销,但能避免伪共享问题

-XX:ParallelGCThreads 并行GC时垃圾收集的线程数

-XX:ConcGCThreads 并发标记、并发整理的执行线程数,对不同的收集器,根据能够并发的阶段,有不同的含义

-XX:InitiatingHeapOccupancyPercent 设置触发标记周期的Java堆占用率阈值,默认45%,Java堆占比指

non_young_capacity_bytes,包括old + humongous

指定收集器

-XX:+UseSerialGC 虚拟机在Client模式下的默认值,打开后使用Serial + Serial Old组合

-XX:+/-UseParNewGC 指定或禁用 ParNew 收集器,激活后使用ParNew + Serial Old组合(JDK9 取消这一参数)

-XX:+UseConcMarkSweepGC 激活CMS,使用ParNew + CMS + Serial Old组合

-XX:+UseParallelGC 使用Parallel Scavenge + Serial Old(PS MarkSweep)组合,JDK9之前虚拟机允许在Server模式下的默认值

-XX:+UseParallelOldGC 使用Parallel Scavenge + Parallel Old组合

-XX:UseGIGC 使用GI收集器,JDK9后的Server模式默认值

-XX:UseShenandoahGC 使用Shenandoah收集器,配合-XX:+UnlockExperimentalVMOptions 使用,在OracleJDK中不支持

-XX:ShenandoahGCHeuristics 设置Shenandoah何时启动一次GC,可选值:adaptive、static、compact、passive、aggressive

-XX:UseZGC 使用ZGC收集器,配合-XX:+UnlockExperimentalVMOptions 使用

-XX:UseNUMA 启用NUMA内存分配支持,目前只有Parallel 和ZGC支持

CMS 收集器提供

-XX:CMSInitiatingOccupancyFraction 设置CMS的老年代空间使用多少内存触发垃圾收集,默认68%

-XX:+UseCMSCompactAtFullCollection 默认开启,在进行Full GC时开启内存碎片的整理(JDK 9 废除)

-XX:CMSFullGCsBeforeCompaction 在执行若干次(由参数决定)不整理空间的Full GC后,下次Full GC整理空间,默认为0(JDK 9 废除)

PS 收集器提供

​ -XX:MaxGCPauseMillis 最大垃圾收集停顿时间

​ -XX:GCTimeRatio GC时间占总时间的比率,默认99,允许最大1%(1/ (1+99)) 的垃圾收集时间

​ -XX:+UseAdaptiveSizePolicy 开关参数 ,被激活后不需要人工指定-Xmn、-XX:SurvivorRatio、

​ -XX:PretenureSizeThreshold

GI 收集器提供

-XX:GIHeapRegionSize 每个Region的大小,取值范围1MB~32MB,应为2的N次幂

-XX:MaxGCPauseMillis 允许的收集停顿时间,默认200ms

-XX:GINewSizePercent 新生代最小值,默认5%

-XX:GIMaxNewSizePercent 新生代最大值,默认60%

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值