美文网首页
JavaScript垃圾回收

JavaScript垃圾回收

作者: storyWrite | 来源:发表于2023-12-28 14:13 被阅读0次

    1. 常见实现原理

    • 标记清理
      当变量进入对应上下文中时标记函数变量为存在使用,当变量不在当前上下文时标记当前变量为未使用
    function foo() {
    // 执行进入函数,变量定义赋值
      const num = 9
    // 标记变量num为使用中
    }
    // 开始执行函数
    foo()
    //  函数执行完成 标记num为未使用
    
    // 由浏览器垃圾回收机制(复杂),不同频率,或者当前浏览器内存使用情况等执行回收,回收标记为未使用的变量num
    
    • 引用计数
      根据变量是否存在引用,记录引用次数,引用次数为0,视为垃圾变量
    //  {name:'test'}引用为1
    const a= {name:'test'}
    //  {name:'test'}引用为2
    const b = a 
    //  {name:'test'}引用为1
    b = null
    //  {name:'test'}引用为0
    a= bull
    // 垃圾回收触发 回收 {name:'test'}
    

    存在问题的情况

    // {name:'a'} 引用为1
    const a = {name:'a'}
    // {name:'b'} 引用为1
    const b = {name:'b'}
    // {name:'b'} 引用为2
    a.child = b
    // {name:'a'} 引用为2
    b.child = a
    
    a = null
    b = null
    // 引用仍然为2 这两个变量将无法回收 
    
    

    相关文章

      网友评论

          本文标题:JavaScript垃圾回收

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