Java虚拟机 (JVM)05 Java的各种实施垃圾回收器

01.serial:(新生代)
单线程工作,这不仅是指同一时段只有一个垃圾回收线程,而且是也垃圾回收线程工作的时候,需要暂停全部的工作线程。
对新生代使用的标记–复制算法

serialOld:(老生代):对老生代使用的标记–整理算法
对于内存的搬运会出现卡顿的现象,叫做“Stop The World”。

02.pernew: (新生代)

多线程并行工作,这里说的是可以多个pernew垃圾回收线程同一时间段工作。但是和工作线程还是先要暂停。
对新生代使用的标记–复制算法

pernewOld: (老生代)对老生代使用的标记–整理算法

03.CMS :(老生代)

基于标记–清除的多标记工作,一.初始标记,找出GC Roots上的对象(直接关联对象) 二.(并发)根据GC Roots上找到的对象进行引用遍历,找出全部可达的对象。三.第二步是很需要时间的,可能随着时间,对象的引用发生了变化,这一步是重新标记。四.(并发)进行对象清除。前两次的标记都会出现stoptheworld。

因为是标记–清除算法,所以会产生内存空间碎片,存放大对象的时候会因为无法存放而出发Full GC事件,对堆中的存活对象进行移动,这样会产生卡顿现象。

04.G1 (全堆)
没有采用分代的垃圾回收思想,利用的整个堆的内存空间,所以又叫做全堆垃圾回收器。G1把对内存划分成为零碎的小区域,每个区域英文名叫做Region。但是其实G1还是采用了分代的思想,Region有几种:Eden,survival,老生代。这几种Region随机放置,不必像之前一样必须连续,但是跟之前的一样,Eden垃圾回收完了后数据传入survival,survival如果放不下,Eden的数据一部分直接放入老生代中,survival一部分数据也放入老生代中,最后Eden内存全部值为0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值