两分钟带你搞定常见垃圾收集器!

(1)JVM的运行模式

  • Server
  • Client

Client的启动比Server模式快,但是长期运行进入稳定期后Server模式的程序运行速度会比Client快,这是因为Server模式启动的是重量级的JVM,对程序进行了更多了优化。

命令行执行java -version即可查询自己电脑上的JVM运行模式:

 

 

(2)垃圾收集器之间的联系

不同的垃圾收集器可能针对不同的年代,有连线代表可以兼容。

 

(3)常见的年轻代垃圾收集器

  • Serial收集器

采用复制算法,采用单线程进行垃圾收集,在进行垃圾收集时,必须暂停所有工作线程("Stop-The-World",导致系统全局停顿),简单高效,Client模式下默认的年轻代收集器。

  • Par New收集器

采用复制算法,采用多线程进行垃圾收集,在进行垃圾收集时,必须暂停所有工作线程,在多核下执行有优势。

  • Parallel Scavenge收集器

采用复制算法,采用多线程进行垃圾收集,在进行垃圾收集时,必须暂停所有工作线程,在多核下执行有优势,Server模式下默认的年轻代收集器。

 

(4)常见的老年代垃圾收集器

  • Serial Old收集器

采用标记-整理算法,采用单线程进行垃圾收集,在进行垃圾收集时,必须暂停所有工作线程,简单高效,Client和Server模式下默认的老年代收集器。

  • Parallel  Old收集器

采用标记-整理算法算法,采用多线程进行垃圾收集,在进行垃圾收集时,必须暂停所有工作线程,在多核下执行有优势。

  • CMS收集器

采用标记-清除算法,比较明显的问题就是容易产生大量的内存碎片,优点是并发清理低停顿,因为在整个过程和中最耗时的并发标记和并发清除过程收集器程序都可以和用户线程一起工作,所以总体来说,Cms收集器的内存回收过程是与用户线程一起并发执行的。

1. 初始标记:仅仅是标记一下GC roots 能直接关联的对象,速度很快  

2. 并发标记:就是进行可达对象标记过程 

3. 重新标记:重新标记阶段就是为了修正并发标记期间因为用户程序继续运行而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段的时间稍长,远远比并发标记阶段时间短

4. 并发清理:并发进行垃圾清理

 

(5)同时用于年轻代和老年代的垃圾收集器

  • G1收集器

采用复制+标记-整理算法,可以同时对年轻代和老年代进行管理,同时解决了内存碎片的问题。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mushroom-

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

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

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

打赏作者

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

抵扣说明:

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

余额充值