美文网首页
常见GC算法

常见GC算法

作者: 浅忆_0810 | 来源:发表于2020-10-14 00:01 被阅读0次

1. 介绍

GCGarbage Collection)就是垃圾回收机制的简写

1.1 GC算法

  • GC是一种机制,垃圾回收器会完成具体的工作
  • 工作的内容就是查找垃圾释放空间、回收空间
  • 算法就是工作时查找和回收所遵循的规则

JavaScript中的垃圾:

  • JavaScript中内存管理时自动的

  • 对象不再被引用时是垃圾

  • 对象不能从根上访问到时是垃圾

1.2 例如:

  • 程序中不再需要使用的对象

    function fn() {
      name = 'lg';
      console.log(`${name} is a coder`);
    }
    fn();
    
  • 程序中不能再访问到的对象

    function fn() {
      const name = 'lg';
      console.log(`${name} is a coder`);
    }
    fn();
    

2. 引用计数算法

原理:通过一个引用计数器维护当前对象的引用数,然后判断该对象的引用值是否为0,如果为0GC会对将所在的对象空间进行回收释放再使用


3. 标记清除算法

核心思想:分标记和清除两个阶段完成
1. 遍历所有对象将当前可达活动对象进行标记
/*
  可达对象:
    可以访问到的对象就是可达对象
    可达的标准就是从根出发是否能够被找到
    JavaScript中的根就可以理解为全局变量对象
*/
2. 遍历所有对象清除没有标记对象
3. 回收相应的空间

4. 标记整理算法

原理:

  1. 标记整理可以看作是标记清除的增强
  2. 标记阶段的操作和标记清除一致
  3. 清除阶段会先执行整理,移动对象位置,让地址上产生连续

5. 总结

优点 缺点
引用计数算法 1. 可以即时回收垃圾对象
2. 减少程序卡顿时间
1. 无法回收循环引用的对象
2. 资源消耗较大
标记清除算法 可以回收回收循环引用的对象 1. 容易产生碎片化空间,浪费空间
2. 不会立即回收垃圾对象
标记整理算法 减少碎片化空间 1. 不会立即回收垃圾对象<br />2. 移动对象位置,回收效率慢

相关文章

  • Lua GC

    一、GC的原理及其算法设计 不同的语言,对GC算法的设计不同,常见的GC算法是引用计数和Mark-Sweep算法,...

  • GC常用算法及常见分代:Minor GC、Major GC和Fu

    GC常用算法及常见分代:Minor GC、Major GC和Full GC [TOC] GC的概念在20世纪60年...

  • 常见GC算法

    1. 介绍 GC(Garbage Collection)就是垃圾回收机制的简写 1.1 GC算法 GC是一种机制...

  • 常见GC算法

    1. 引用计数 优点: 发现垃圾立即回收 最大限度减少程序暂停 缺点: 无法回收循环引用的对象 时间开销大 2. ...

  • GC —— 垃圾回收机制认识与算法详解

    目录 GC相关概念 常见GC算法 引用计数算法核心思想实现原理实例优缺点 标记清除算法核心思想实现原理图示优缺点 ...

  • 常见垃圾回收器及算法简介

    一、GC的常见算法 Mark-Sweep(标记清除算法) 该算法适合存活对象较多,可回收对象较少的场景。执行过程是...

  • Java GC与四种引用

    常见的垃圾收集算法 复制(Copying)算法,我前面讲到的新生代GC,基本都是基于复制算法,将活着的对象复制到t...

  • chapter-4 GC算法与种类

    GC 算法与种类 ■ GC的概念■ GC算法• 引用计数法• 标记清除• 标记压缩• 复制算法■可触及性■ Sto...

  • 关于GC之二-常用GC算法

    回收 回收是个比较大的话题,有各种各样的算法,针对不同区域,也有不同的算法选择。 常见的GC算法 标记清除(Mar...

  • 05 | JVM-GC收集器

    常见的垃圾收集器 上一篇文章中介绍了JVM的GC常见算法,而JVM的垃圾收集器就是这些算法使用编程语言的具体实现,...

网友评论

      本文标题:常见GC算法

      本文链接:https://www.haomeiwen.com/subject/xzabpktx.html