JVM垃圾回收器

本文介绍了Java虚拟机中的三种垃圾回收策略:串行GC适用于堆内存小的环境,采用复制算法;吞吐量优先策略使用ParallelGC和ParallelOldGC,适用于多线程和大内存场景,旨在最大化程序运行时间;响应时间优先的CMS垃圾回收器,结合ParNew和ConcMarkSweepGC,优化单次暂停时间,适合需要低延迟的应用。
摘要由CSDN通过智能技术生成

1.串行垃圾回收器

语句: -XX:+UserSerialGC=serial+SerialOld
serial新生代的复制算法
SerialOld老年代的标记加整理算法
单线程
堆内存较小,适合个人电脑

2.吞吐量优先

语法含义
-XX:+UseParallelGC~ -XX:+UserParallelOldGCUseParallelGC是开启新生代垃圾回收,UserParallelOldGC 是开启老年代垃圾回收,新生代是复制算法,老年代是标记加整理算法,只开启一个默认另外一个也会开启
-XX:+UseAdaptiveSizePolicy采用自适应的大小调整策略,主要调整新生代的大小
-XX:GCTimeRatio=ratio1/(1+ratio)它用于控制垃圾回收时间与执行用户线程时间的比率。具体来说,它定义了当JVM花费在垃圾回收的时间占总时间的比率达到多少时,JVM将会调整垃圾回收策略以减少GC的时间。
-XX:MaxGCPauseMillis=ms默认值是200ms,表示设置GC的最大停顿时间
-XX:ParallelGCThreads=n可以控制运行时线程的数量

多线程
适合堆内存较大的场景,需要多核CPU支持
让单位时间内,STW的时间最短,根据牛波一公式2+2=4所得,这个吞吐量的时间讲的是总时间最短

3.响应时间优先d

语法含义
-XX:+UseConcMarkSweepGC~ -XX:+UseParNewGC ~ SerialOld基于标记+清除算法的垃圾回收器,并且他是并发的,他可以跟用户线程并发执行,前两个参数配合使用,是新老年代回收,当出现并发失败的时候使用第三个参数,使其退化到单线程
-XX:ParallelGCThreads=n ~ -XX:ConcGCThreads=threads设置STW阶段的并行worker线程数。如果逻辑处理器小于等于8个,则默认 n 等于逻辑处理器的数量。如果逻辑处理器大于8个,则 n 默认约等于处理器数量的5/8。如果是高配置的 SPARC 系统,则默认 n 大约等于逻辑处理器数量的5/16。大多数情况下使用默认值即可。
-XX:CMSInitiatingOccupancyFraction=percent控制何时进行CMS垃圾回收,设置内存占比,不用等到垃圾满了才回收,为浮动垃圾预留一定空间,可以设置80%就是说当老年代垃圾占用内存的80%时就开始回收早期默认值是65%
-XX:+CMSScavengeBeforeRemark在标记之前先进行新生代垃圾回收

多线程
适合堆内存较大的场景,需要多核CPU支持
占用了一定的cpu吞吐量,对整个应用程序的吞吐量有一定的影响
STW(世界暂停时间)
尽可能让单次的STW时间最短 ,根据牛波二公式1+1+1+1=4所得,这个时间讲的是单次时间最短

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值