美文网首页
JavaScript 内存管理

JavaScript 内存管理

作者: bzwhlll | 来源:发表于2018-10-12 17:23 被阅读0次

    内存管理

    参考

    生命周期

    • 内存分配
    • 使用内存
    • 不需要时垃圾回收,释放内存

    引用计数方式

    判断对象有没有被其它对象引用

    var a = {'s':1}
    a = null    //分配的内存即被回收
    
    //问题——循环引用
    function f(){
        var a = {'s':1},b={}
        b.o = a
        a.o = b //a指向的内存被b引用,a一次。而b指向的内存又被a中的o引用,b一次。造成循环引用,这种情况下函数运行之后啊a,b仍有计数次数不能被正常回收。
    }
    
    //实例 IE6,7时的DOM的垃圾回收bug
    var div
    window.onload = function() {
        div = document.getElementById("myDivElement")
        div.onclick = function() {
            div.innerHTML = 'xxxx'
        }
    }//获取到myDivElement是一块内存,被div引用,然后div又被onclick方法进行引用,造成循环引用。
    

    标记清除方式

    从全局对象(window)开始向下寻找引用的对象,然后找这些对象引用到的对象。这些能找到的对象就不会被回收。像上面的循环引用对象,从全局window开始寻找是找不到的,就会被正常回收。

    相关文章

      网友评论

          本文标题:JavaScript 内存管理

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