美文网首页
js垃圾回收机制——GC算法(个人笔记)

js垃圾回收机制——GC算法(个人笔记)

作者: kevision | 来源:发表于2022-07-16 17:46 被阅读0次

javaScript中的垃圾


  • javaScript中内存管理是自动的
  • 对象不再被引用时是垃圾
  • 对象不能从根上访问到时是垃圾

javaScript中的可达对象


  • 可以访问到的对象就是可达对象(引用、作用域链)
  • 可达的标准就是从根出发是否能够被找到
  • javaScript中的根可以理解为是全局变量对象

GC算法介绍


GC介绍与作用
  • GC就是垃圾回收机制的简写
  • GC可以找到内存中的垃圾,并进行释放和回收空间

常见GC算法


  • 引用计数
  • 标记清除
  • 标记整理
  • 分代回收

引用计数算法

  • 核心思想:为每个对象设置引用数,判断当前引用数是否为0
  • 引用计数器
  • 引用关系变化时引用计数器会修改引用数字
  • 引用数字为0时立即回收

引用计数算法优缺点

优点:

  • 发现垃圾时立即回收
  • 最大限度减少程序暂停
    运行内存都是有限的,引用计数算法会根据引用数字为0立即释放内存,避免达到内存上限

缺点:

  • 无法回收循环引用的对象
    例子中obj1和obj2是循环引用的对象,引用数值不会是0,所以不会被回收
function fn() {
    const obj1 = {}
    const obj2 = {}
    obj1.name = obj2
    obj2.name = obj1
    return ''
}
  • 时间开销大,资源消耗较大
    维护一个引用数值,时刻监听着对象的引用数值是否需要修改,而对象的引用数值修改本身就需要时间。当有更多的对象的引用数值需要修改的时候,时间的消耗就会更大

标记清除算法

  • 核心思想:分标记和清除两个阶段完成
  • 遍历所有对象并标记活动对象(可达对象)
  • 遍历所有对象清除没有标记的对象,并把第一阶段的标记给抹掉
  • 回收相应空间,并交给空闲链表进行维护
image.png

标记清除算法优缺点

优点:

  • 可以回收循环引用的对象

缺点:

  • 容易产生碎片化空间,浪费空间
    产生多个地址不连续的内存空间。比如释放了一个1个单位和一个2个单位的内存空间,但是后面申请了一个1.5个单位的内存空间,前面所释放的内存都不适用
  • 不会立即回收垃圾对象,清除垃圾对象时程序暂停

标记整理算法

  • 标记清除可以看作是标记清除的增强
  • 标记的阶段和标记清除一致
  • 清除阶段会先执行整理,移动对象位置
image.png image.png image.png

标记整理算法优缺点

优点:

  • 减少碎片化空间

缺点:

  • 不会立即回收垃圾对象

相关文章

  • 常见GC算法

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

  • js垃圾回收机制——GC算法(个人笔记)

    javaScript中的垃圾 javaScript中内存管理是自动的 对象不再被引用时是垃圾 对象不能从根上访问到...

  • 常见垃圾回收算法

    什么是垃圾回收(GC) 垃圾回收机制是一种找到内存中的垃圾将其释放并回收空间的机制 常见的垃圾回收算法 引用计数法...

  • 垃圾回收机制

    垃圾回收机制—GC Javascript具有自动垃圾回收机制(GC:Garbage Collecation),也就...

  • java基础知识,垃圾回收

    知识要点: 垃圾回收要点知识 垃圾回收算法 垃圾回收器 垃圾回收机制 GC所关心的东西:“这块数据是不是一个指针”...

  • 乐字节Java|GC垃圾回收机制、package和import语

    JavaGC垃圾回收机制、package 和 import语句。 一、GC垃圾回收机制 GC全名:Garbage ...

  • JVM垃圾回收

    GC垃圾回收流程 垃圾收集算法 垃圾回收算法 引用类型 垃圾回收的时机 1.垃圾收集算法 (1).引用计数算法含义...

  • javascript的垃圾回收机制与内存管理

    一、垃圾回收机制—GCJavaScript具有自动垃圾回收机制(GC:Garbage Collecation),也...

  • GC回收机制与分代回收策略

    GC回收机制 一、前言 垃圾回收:Garbage Collection,简写 GC。JVM 中的垃圾回收器会自动回...

  • JavaScript内存管理

    JS内存回收 JS 有自动垃圾回收机制,就是找出那些不再继续使用的值,然后释放其占用的内存。 垃圾回收算法: 引用...

网友评论

      本文标题:js垃圾回收机制——GC算法(个人笔记)

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