JVM垃圾回收算法

是否回收需要通过GC Roots可达性分析判断是否根可达

一、复制算法

原理:

将指定的内存一分为二,每次只使用其中的一块内存,另一块内存作为预留,当内存垃圾回收的时候就把不需要回收的内存区域复制到另一块预留内存钟,并将原来使用的内存格式化,并且重新作为预留内存等待下一次垃圾回收的时候使用

优点

  1. 效率高
  2. 不会产生内存碎片

缺点

  1. 内存利用率低
  2. 需要移动指针

Appel 式回收

分配一块较大的 Eden 区和两块较小的 Survivor 空间(叫做 From 或者 To,也可以叫做 Survivor1 和
Survivor2)

在JVM中应用

JVM中新生代内存区域使用复制算法的apple式回收

二、标记清除算法

原理

1、标记,扫描所有对象标记出需要回收的对象
2、清除,扫描回收所有被标记的对象

优点

  1. 对象指针不需要移动

缺点

  1. 如果大量的对象需要被回收,扫描两次,效率低
  2. 产生大量不连续的内存碎片,可能导致大对象因为没有足够的连续内存而无法在该区域分配,从而提前触发垃圾回收

在JVM中应用

用于老年代的垃圾回收

三、标记整理算法

1、扫描所有对象标记出需要回收的对象
2、让所有存活的对象向一端移动
3、清理存活对象移动后的全部内存

优点

  1. 没有内存碎片

缺点

  1. 效率低
  2. 引用对象的地方都需要更新指针

在JVM中应用

用于老年代的垃圾回收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值