java 虚拟机 垃圾收集器

本文介绍了JVM中各种垃圾回收器的特点及其适用场景,包括Serial、ParNew、ParallelScavenge等新生代收集器,以及SerialOld、ParallelOld、CMS等老年代收集器,并对G1收集器进行了详细介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、新生代:

Serial 收集器是最悠久的收集器。单线程,在进行垃圾收集是,必须暂停其他所有的工作线程。

ParNew收集器是Serial的多线程版本。

Parallel Scavenge 收集器是一个新生代收集器。 目的是到达一个可控制的吞吐量,即cpu运行用户代码的时间和cpu总消耗内存的时间,高效的吞吐量可以高效率的使用cpu时间,尽快完成程序的运算任务。只要适合后台运算而不需要太多交互的任务。

2、老年代:

Serial Old 是Serial的老年代版本,主要意义是在于给client模式下的虚拟机使用。

Parallel Old  是Parallel Scavenger的老年代版本 jdk1.6才开始使用。

CMS 以获取最短回收停顿时间为目标的收集器。

         明显的缺点:对CPU资源很敏感,在少量cpu的情况下,执行速度会很低。

                                 大量的碎片。

3、G1 收集器 面向服务端的垃圾收集器。淡化了新生代和老年代

         特点:并发并行,分代收集,空间整合,预测停顿时间模型

JDK1.7 垃圾收集器参数总结:

参数

描述

UseSerialGC

虚拟机运行在Client模式下的默认值,打开此开关后,使用Serial+Serial Old 的收集器组合进行内存回收。

UseParNewGc

 

打开此开关后,使用ParNew+Serial Old的收集器组合进行内存回收

UseConcMarkSweepGC

打开此开关后使用ParNew+CMS+Serial Old的收集器组合进行内存回收,Serial Old收集器将最为CMS收集器出现Concurrent Mode Failure失败后的后备收集器使用

UseParallelOldGC

 

使用 Parallel+parallel Old的收集器组合进行内存回收

SurvivorRatio

新生代中Eden区域与Survivor区域的容量比值,默认为8代表Eden:Suvivor-8:1

PretenureSizeThreshold

直接晋升到老年代的对象大小,设置参数后,大雨这个参数的对象将直接在老年代分配

MaxTenuringThreshold

晋升到老年代的对象年龄,每个对象在坚持过一次Minor GC之后,年龄就增加1,当超过这个参数值时就进入老年代

UseAdaptiveSizePolicy

 

动态调整java堆中各个区域的大小以及进入老年代的年龄

HandlePrommotionFailure

是否允许分配担保失败,即老年代的剩余空间不足一应付新生代的整个Eden和Survivor区的所有对象都存活的极端情况

ParallelGCThreads

设置并行GC时内存回收的线程数

GCTimeRatio

GC时间占总时间的比率,默认为99,即允许1%的GC时间,仅在使用Parallel Scavenge收集器时生效

MaxGCpauseMillis

设置GC的最大停顿时间,仅在使用Parallel Scavenge收集器时生效

CMSInitiatingOccupanyFraction

设置GC收集器在老年代空间被使用多少后触发垃圾回收,默认值为68%仅在使用CM收集器时奏效

UseCMSCompactAtFullCollection

设置CMS收集器再完成一次垃圾回收后是否进行一次内存碎片整理,仅在使用CMS时生效

CSMFullGcsBeforeCompaction

设置CMS收集器在进行若干手机后在启动一次内存碎片整理,仅在使用cms收集器时生效


我们可是使用可视化工具来查看,当前使用的收集器


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值