美文网首页
JavaScript垃圾回收机制

JavaScript垃圾回收机制

作者: 幸福幸福幸福 | 来源:发表于2017-05-18 18:46 被阅读16次

    地址

    标记清除

    摘自高设:垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记(标记方法不用过多讨论),然后会去掉环境中的变量(比如window.a,obj.b)以及被环境中的变量引用的变量的标记,然后对于那些有标记的变量就会被视为准备删除的变量,原因是环境中已经无法获取到这些变量。
    相当于是在判断对象是否可以获得。结果是所有无法从根对象(浏览器环境下就相当于window)获取到的对象都将被清除。

    引用

    引用计数的含义是跟踪记录每个值被引用的次数。当声明一个变量并将一个引用类型值赋给这个变量时,则该值的引用次数+1。相反如果这个变量又指向另外一个引用值时,那么这个值的引用次数就-1.当一个值的引用次数为0时,他所占的内存就会在下次垃圾回收时被释放。
    这种方法的一个缺陷在于循环引用时,


    对于这个例子一个dom元素与一个原生的JavaScript对象之间创建了循环引用。由于存在这个循环引用,即使将例子中的dom从页面中移除,他也永远不会被回收。
    为了避免类似的循环引用问题,最好是在不使用它们的时候手工断开原生JavaScript对象与dom元素之间的连接。例如:

    这个算法是从“对象是否不再需要”角度来进行处理

    垃圾回收触发时机

    IE7中,触发垃圾收集的变量分配、字面量和数组元素的临界值被调整为动态修正。例如如果例程回收的内存分配量低于15%,则这个临界值就会加倍。如果例程回收了85%的内存分配量,这个临界值会被重置为默认值。

    相关文章

      网友评论

          本文标题:JavaScript垃圾回收机制

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