美文网首页
JavaScript性能优化

JavaScript性能优化

作者: Dear丶BQ | 来源:发表于2020-10-29 14:34 被阅读0次

    内存管理


    内存:由可读写单元组成,表示一片可操作的空间
    管理:认为的操作一片空间的申请使用和释放
    内存管理:开发者主动申请空间,使用空间释放空间
    管理流程:申请——使用——释放

    let obj={}//申请
    obj.name='lg'//使用
    obj=null//释放
    

    垃圾回收与常见GC算法


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

    javascript中的可达对象

    • 可以访问到的对象就是可达对象(引用、作用域链)
    • 可达的标准就是从根出发是否能被找到
    • javascript中的根就可以理解为全局变量对象
    let obj={name:'xm'}
    let ali=obj
    obj=null
    
    function objGroup(obj1,obj2){
      obj1.next=obj2
      obj2.prev=obj1
      return {
        o1:obj1,
        o2:obj2
      }
    }
    let obj=objGroup({name:'obj1'},{name:'obj2'})
    cosole.log(obj)
    
    image.png
    GC算法
    • GC就是垃圾回收机制的简写
    • GC可以找到内存中的垃圾、并释放和回收空间
    • 算法就是工作时查找和回收所遵循的规则

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

    常见GC算法
    引用计数
    1. 核心思想:设置引用数,判断当前引用数是否为0
    2. 引用计数器
    3. 引用关系改变时修改引用数字
    4. 引用数字为0时立即回收

    优点

    • 发现垃圾立即回收
    • 最大限度减少程序暂停

    缺点

    • 无法回收循环引用的对象
    • 时间开销大
    标记清除
    • 核心思想:分标记和清除两个阶段
    • 遍历所有的对象找标记活动对象
    • 遍历所有对象清除没有标记的对象
    • 回收相应的空间
    标记整理
    分代回收

    v8引擎的垃圾回收


    Performance工具


    相关文章

      网友评论

          本文标题:JavaScript性能优化

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