GC 策略及 IE 性能的学习笔记

阅读《JavaScript高级程序设计(第2版)》第4章学习到的,记下:

JS的GC策略有两种:

  1. 标记清除
  2. 引用计数

现在,主流浏览器都用的是第1种。IE不是全部采用第1种,它采用了两种GC策略,在BOM和DOM中的对象采用了第2种。

在引用计数策略中有个称为“循环引用(circular reference)”的严重问题。

下面是循环引用问题代码示例:

var elm=document.getElementById('xxx');
var obj={};
obj.elm=elm;
elm.obj=obj;

就是对象A的属性引用了对象B,B的属性也引用了对象A。这样就会造成对象相互循环引用,不会被GC回收处理掉。

IE6的另一个问题是性能问题。是因为它的GC处理的问题:IE6有个分配量的临界值,到了那个值GC就不停的运行,问题是那些对象仍然在执行环境中。

posted on 2010-02-10 17:35  豆豆の爸爸  阅读(1073)  评论(0编辑  收藏  举报