JVM学习记录四(垃圾回收器之垃圾回收器)
  RtHGisH6FqEm 2023年11月24日 27 0

不要觉得标题奇怪,这是根据前几次的标题规律定的

串行垃圾回收器

分为两类serial和serial old,

1.serial作用于新生代,采用复制算法清理垃圾

2.serial old 作用于老年代,采用标记-整理算法

特点:清理垃圾时只有一个线程工作,会出现STW现象

JVM学习记录四(垃圾回收器之垃圾回收器)_垃圾回收

并行垃圾回收器

分为parallel New和parallel old,这是JDK8默认的垃圾回收器

1.parallel NEW用于新生代,采用复制算法

2.parallel old 用于老年代,采用标记-清理算法

特点:垃圾回收时,多线程工作,也会出现STW现象

JVM学习记录四(垃圾回收器之垃圾回收器)_垃圾回收_02

CMS(并发)垃圾回收器 

这是一个并发的垃圾回收器,采用标记-整理算法清理垃圾,作用与老年代的垃圾回收,主要目标是以最短回收停顿时间,

特点是:垃圾回收时应用依然可以正常运行

JVM学习记录四(垃圾回收器之垃圾回收器)_垃圾回收_03

G1(gabage first)垃圾会收器

JVM学习记录四(垃圾回收器之垃圾回收器)_垃圾回收_04

这是一个比较复杂的垃圾回收器

这是有用于新生代和老年代的垃圾回收器,是JDK9之后默认垃圾回收器

内存被划分为多个同等大小的区域,不再有固定的eden区、survivor区,old区,humongous区每个区域都可以充当这些区域,来存放对象

垃圾回收时采用复制算法,优点是:响应时间与吞吐量兼容性好

有三个阶段的垃圾回收阶段:

新生代回收:没什么特殊点,就是使用复制算法清理新生代区域(eeden区和survivor区),清理过程会存在stw线程

并发标记:当老年代使用空间超过整理内存的(45%)时会触发并发标记

混合回收:特点是会根据清理垃圾时的暂停时间长短来判断哪些垃圾的回收价值高, 那么他就会优先回收哪些区域,本次回收会针对eden区、survivor区、老年代区 

那么对于一些较大的对象会存放到humongous区,也有可能会分配连续的区域来存放 

JVM学习记录四(垃圾回收器之垃圾回收器)_老年代_05



再多讲一个可能会出现的面试题:

强引用:直接与GC root引用,一直都不会被回收

JVM学习记录四(垃圾回收器之垃圾回收器)_老年代_06

软引用:关键词:softreference ,垃圾回收后,内存不足时会被回收

JVM学习记录四(垃圾回收器之垃圾回收器)_老年代_07

弱引用:垃圾回收时,必然会被回收掉

JVM学习记录四(垃圾回收器之垃圾回收器)_垃圾回收_08

虚引用:必须配合引用对象使用,被引用对象回收之后虚引用相关内存会被直接释放

JVM学习记录四(垃圾回收器之垃圾回收器)_垃圾回收_09

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月24日 0

暂无评论

推荐阅读
RtHGisH6FqEm