java学习个人笔记---常见的垃圾回收器及存储结构分析

常见的垃圾回收器

(1)串行回收器:

串行回收器使用一个CPU处理,在回收垃圾期间应用程序会产生暂停,具体策略为:Young代采用串行复制算法,Old代采用串行标记压缩算法

存储结构变化分析如下:




Young代内存包含Eden区和Survivor区,Survicor区分为form区和to区,from区和to区会相互转换,系统将活动可达对象直接复制到初始化为空的Survivor区(即To区),如果有些对象的空间特别大,垃圾回收器会直接将其复制到Old代中。

From区的活动对象到底是复制到To区还是Old代中去,取决于对象的生存时间,生存时间长的复制到Old代,否则,复制到To区


(2)并行回收器:

并行回收器与串行回收器基本相同,采用的算法也基本一致,唯一不同的是并行回收器对Young代的回收处理不同;

对Young代的回收采用了多个CPU处理,多线程处理;

Old代的回收行回收器的处理一致,不管采用多少个CPU,依旧采用单线程处理。


(3)并行压缩回收器:

并行压缩回收器与行回收器基本相同,采用的算法也基本一致,唯一不同的是并行压缩回收器对Old代的回收处理不同;

对Young代的回收行回收器的处理一致

对Old代回收,并行压缩回收器会对Old代的高密度可达对象进行检测,以检测出的高密度可达对象区域为中心,该中心的左边区域不会压缩和回收,而是将其右边区域进行压缩和回收。


(4)并发标记清除(Mark-Sweep)回收器(CMS回收器):

CMS回收器对Young代的回收处理与并行回收器完全一致,采用复制算法,因此会导致应用程序暂停;

对Old代的回收,串行、标志压缩可以等到Old代内存满了再回收,但CMS回收器要与应用程序并发运行,如果等到Old代内存满了再回收,应用程序就无内存可用,因此CMS回收器默认等Old代68%满了就可以回收了。

注意:CMS回收器Old回收采用的不是标志压缩算法,而是标志清除算法,因此它会产生内存碎片;

适用性:CMS回收器只需两次暂停应用程序,其他都与应用程序并行,适合实时性较高的应用程序;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值