最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • GC —— 垃圾回收机制认识与算法详解

    正文概述 掘金(顽皮的雪狐七七)   2020-12-13   385

    目录

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

    GC相关概念

    • GC:垃圾回收机制的简写,垃圾回收期完成具体的工作.可以找到内存中的垃圾、并释放和回收空间
    • GC垃圾:程序中 不再需要使用的程序中不能再访问的 对象
    • GC算法:是GC工作时查找和回收所遵循的规则

    常见GC算法

    • 引用计数
    • 标记清除
    • 标记整理
    • 分待回收(V8用到的)

    引用计数算法

    核心思想

    设置引用数,判断当前引用数是否为0来决定是不是垃圾对象,如果是0GC就进行工作,进行回收。

    实现原理

    • 引用计数器
    • 引用关系改变时修改引用数字
    • 引用数字为0时立即回收

    实例

    const user1 = { age: 11 }
    const user2 = { age: 12 }
    const user3 = { age: 13 }
    const nameList = [user1.age, user2.age, user3.age]
    
    function fn() {
      const num1 = 1
      const num2 = 2
      num3 = 3
    }
    
    fn()
    

    优缺点

    引用计数算法内容
    优点1. 发现垃圾时立即回收
    2. 最大限度减少程序暂停,让空间不会有被占满的时候
    缺点1. 无法回收循环引用的对象
    2. 资源消耗开销大(对所有对象进行数值的监控和修改,本身就会占用时间和资源)

    下面举一栗子说明上面缺点中无法回收循环应用对象的情况:

    
    function fn() {
      const obj1 = {}
      const obj2 = {}
      obj1.name = obj2
      obj2.name = obj1
      return 'hello world'
    }
    
    fn()
    // obj1和obj2,因为互相有引用,所以计数器并不为0,fn调用之后依旧无法回收这两个对象
    

    标记清除算法

    相比原理实现更加简单,还能解决相应问题,V8当中会大量使用到。

    核心思想

    标记清除 两个阶段完成

    实现原理

    • 第一阶段:遍历所有对象找活动对象(可达对象)标记(层次用递归进行操作)
    • 第二阶段:遍历多有对象清除没有标记对象并抹掉第一个阶段标的标记
    • 回收相应空间,将回收的空间加到空闲链表中,方便后面的程序申请空间使用

    图示

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

    优缺点

    标记清除算法内容
    优点相对于引用计数算法来说解决对象循环引用的问题,局部作用域里面的内容无法被标记,所以即使有引用还是会被清除掉缺点1. 空间链表地址不连续(空间碎片化),不能进行空间最大化使用
    2. 不会立即回收垃圾对象,清除的时候程序是停止工作的。

    下面是空间链表地址不连续的图示,可以更好的帮我们理解:

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

    标记整理算法

    这个算法和标记清除算法配合在V8中也是广泛应用。

    核心思想

    标记清除 中间,添加了内存空间的 整理

    实现原理

    • 标记整理可以看做是标记清除的 增强
    • 标记阶段:与标记清除一致
    • 整理阶段:清除钱先执行整理,移动对象位置,在地址上产生连续
    • 清除阶段:与标记清除一致

    图示

    开始会有很多活动对象和非活动对象,还有一些空闲空间,回收前先开始整理 GC —— 垃圾回收机制认识与算法详解

    整理之后要将非活动对象进行清除

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

    最后就留出了整个的空闲空间

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

    优缺点

    标记整理算法内容
    优点相较标记清除算法减少了碎片化空间缺点不会立即回收垃圾对象,清除的时候程序是停止工作的。

    起源地下载网 » GC —— 垃圾回收机制认识与算法详解

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元