标记整理算法详解(定义优缺及算法图解)

标记整理算法详解(定义优缺及算法图解)-mikechen

标记整理算法属于JVM垃圾回收算法,而且Java面试经常被问,下面我重点详解标记整理算法@mikechen

标记整理算法定义

标记整理算法,英文全称Mark and Sweep with Compacting,简称MSC,是一种常见的JVM垃圾回收算法,常用于实现动态内存分配和管理。

 

标记整理算法优缺点

标记整理算法优点:

标记整理算法的优点是可以解决内存碎片问题,并且不需要暂停应用程序运行。

 

标记整理算法缺点:

  • 需要大量的时间和空间:标记整理算法需要大量的时间和空间来进行对象移动和地址更新操作。
  • 可能会导致性能问题:由于需要遍历整个内存空间,标记整理算法在处理大量内存和大量对象时,可能会导致性能问题。

 

标记整理算法思想

标记整理算法,如下图所示:

标记整理算法详解(定义优缺及算法图解)-mikechen

标记整理算法步骤,主要分为如下4个步骤:

  1. 遍历内存中的所有对象,标记出所有正在使用的对象。
  2. 将所有标记过的对象移动到内存的一端,形成一个连续的内存块,同时将这些对象的地址更新到新的位置上。
  3. 将内存块另一端的所有未标记对象删除,并将这些内存空间标记为可用。
  4. 更新所有指向移动对象的指针,使其指向新的地址。

 

标记整理算法适合

标记整理算法适合老年代进行垃圾收集,parallel Oldgc和Serial old收集器就是采用该算法进行回收的。

以上就是标记整理算法详解,更多JVM垃圾回收算法,请查看:4种JVM垃圾回收算法详解

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法