javascript教程-变量的垃圾收集处理

文章标签: javascript教程
2014-11-5 16:25:24     22 人阅读    

一、垃圾收集
1、标记清除
     JavaScript最常用的垃圾收集方式即标记清除,这种算法的思想是给当前不使用的值加上标记,然后再回收其内存。当变量进入环境(如在函数中什么一个变量)时,就将这个变量标记为“进入环境”,当变量离开环境时,标记为“离开环境”,最后由垃圾收集器完成内存清除工作。
2、引用计数
      跟踪记录每一个值被引用的次数,当引用次数为0时,就将其占用的内存空间回收。
引用计数会存在“循环引用”的问题:

function problem() {
    var objectA = new Object();
    var objectB = new Object();
    objectA.someOtherObject = objectB;
    objectB.anotherObject = objectA;
}
      objectA和objectB通过各自属性互相引用,两个对象的引用次数都是2,当函数执行完毕后,objectA和objectB还将继续存在,它们的引用次数不可能为0。
      再比如,IE中,BOM和DOM中的对象是用C++以COM对象的形式实现的,而COM对象的垃圾收集机制就是引用计数策略。因此,使用IE的js引擎是使用清除标记策略来实现的,但是js访问的COM对象依然是基于引用计数策略的。

var element = document.getElementById("element");
var myObject = new Object();
myObject.element = element;
element.someObject = myObject;
      在一个DOM元素与一个原生JavaScript对象(myObject)之间创建了循环引用。
可使用如下代码消除循环引用:

myObject.element = null;
element.someObject = null;
3、性能问题
主要针对IE7以前的浏览器而言。
4、管理内存
确保占用最少的内存可以让页面获得更好的性能。优化内存占用的最佳方式就是为执行中的代码只保存必要的数据。一旦数据不再有用,最好通过将其设置为null来释放其引用。这种做法适合用于大多数全局变量和全局对象的属性,局部变量会在他们离开实行环境时自动解除。


原文地址:http://www.itmmd.com/201411/130.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

使用正则表达式的两种方式:NSRange和NSRegularExpression类   上一篇
下一篇  javascript教程-变量的执行环境和作用域

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!