栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JVM的三种常见的垃圾收集算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM的三种常见的垃圾收集算法

文章目录
    • JAVA堆内存组成
    • JVM中三种常见的垃圾收集算法?
      • 标记-清除算法?
      • 复制算法?
      • 标记整理算法?


JAVA堆内存组成

堆大小=新生代+老年代。如果是Jav a8则没有Permanent Generation。
其中新生代(Young)被分为Eden和S0 (from)和S1(to)。默认比例是:Edem : from: to=8 : 1 : 1

JVM中三种常见的垃圾收集算法?
  1. 标记-清除算法(Mark_ Sweep)
  2. 复制算法(Copying)
  3. 标记-压缩算法(Mark-Compact)
标记-清除算法?

首先标记出所有需要回收的对象,在标记完成后统一回收掉所有的被标记对象。

缺点:

  1. 标记和清除的效率都不高。
  2. 空间问题, 清除后产生大量不连续的内存随便。如果有大对象会出现空间不够的现象从而不得不提前触发另一次垃圾收集动作。
复制算法?

将可用内存按容量划分为大小相等的两块,每次只使用其中的一块,当这一块内存用完了,就将还存
活的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。

优点:

  • 解决了内存碎片问题。

缺点:

  • 将原来的内存缩小为原来的一半,存活对象越多效率越低。
标记整理算法?

先标记出要被回收的对象,然后让所有存活的对象都向一端移动,然后直接清理掉边界以外的内存。解决了复制算法和标记清理算法的问题。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328121.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号