• 浅谈浏览器垃圾回收机制


    javaScriipt 使用垃圾回收机制来自动管理内存

    js 的回收机制目前分为两种方式:1.标记清除(各大浏览器主流算法)2.引用技术

      一: 标记清除

        这种算法的思想是给当前不使用的值加上标记,然后再回收其内存

        算法流程:

          1.浏览器再运行的时候会给存储再内存中的所有变量都加上标记

          2.去掉环境中的变量以及被环境中引用的变量的标记

          3.如果还有变量有标记,就会被视为准备删除的变量

          4.垃圾回收机制完成内存的清除工作,销毁那些带标记的变量,并回收他们所占用的内存空间

      二:引用计数

        这种算法的思想是跟踪记录所有值被引用的次数。javaScript 引擎目前都不再使用这种算法,但再IE 中访问非原生JavaScriopt 对象(如DOM元素)时,这种算法任然可能会导致问题

        当代码中存在循环引用现象时,引用计数算法就会导致问题

        解除变量的引用不仅可以帮于消除循环引用现象(一个变量使用完之后赋值为null),而且对垃圾收集也有好处。为了确保有效的回收内存,应该及时解除不再使用的全局对象、全局对象属性以及循环引用变量的引用

        算法流程:

          1.声明了一个变量并将一个引用类型的值赋值给这个变量,这个引用类型值引用次数就是1

          2.同一个值又被赋值另一个变量,这个引用类型的值引用次数加1

          3.当包含这个引用类型值得变量又被赋值另一个值了,那么这个引用类型的值的引用次数减一

          4.当引用次数变成0时, 说明这个值需要解除引用

          5.当垃圾回收机制下次运行时,它就会释放引用次数为0 的值所占用的内存

        

  • 相关阅读:
    更博不能忘——webpack学习笔记
    面试中遇到过的闭包~
    github踩坑之git命令收集与整理(windows)
    应该写个博客
    重学C语言(一):熟悉汇编语言
    关于Swift的闭包(closure)以及其在可选(Optional)类型中的应用
    解决Xcode 7出现cdtool cannot compile的问题(2015年8月12日更新)
    更改LaTeX的数学模式中使用的字体
    在Mac下安装使用支持中文的LaTeX(二)
    在Mac下安装使用支持中文的LaTeX(一)
  • 原文地址:https://www.cnblogs.com/SuperBrother/p/12641138.html
Copyright © 2020-2023  润新知