0
点赞
收藏
分享

微信扫一扫

JVM 垃圾回收算法

是归人不是过客 2022-03-11 阅读 50
JavaJVM

0 概述

基础垃圾算法:标记-清除、标记-整理、复制

综合垃圾回收算法:分代收集算法、增量算法

1 标记-清除(Mark-Sweep)

  1. 标记需要回收的对象

  2. 清理掉要回收的对象

缺点:垃圾回收之后会存在内存碎片

2 标记-整理(Mark-Compact)

  1. 标记需要回收的对象

  2. 把所有的存活对象压缩的内存的一端

  3. 清理掉边界外的所有空间

这个算法可以避免标记-清除算法会产生的内存碎片

3 复制(Copy)

image-20220303223424546

  1. 把内存分为两块,每次只使用一块

  2. 把当前使用的内存中的存活对象复制到未使用的内存中去,然后清除掉正在使用的内存中的所有对象

  3. 交换两个内存的角色,等待下次回收

4 三种算法对比

回收算法有点缺点
标记-清除实现简单存在内存碎片、分配内存速度会受影响
标记-整理无碎片整理内存存在开销
复制性能好、无碎片内存利用率低

5 分代收集算法

  1. 把内存分成多个区域,不同区域使用不同的回收算法回收对象
  2. TODO 细节太多,等会再说

6 增量算法

如果内存非常大,如果一次性回收所有垃圾,势必会消耗很多的时间,从而造成系统长时间停摆。

  1. 每次只收集一小片区域的内存空间的垃圾
举报

相关推荐

0 条评论