javascript垃圾收集

垃圾收集器必须跟踪哪个变量有用,哪个变量没用,对于不再有用的变量打上标记。

对标识无用变量的策略将会因实现而异,主要有标记清除和引用计数两种办法。

1、标记清除:使用”进入环境变量列表“和”离开环境变量列表“。对进入环境的变量标记,对离开环境的变量也进行标记。IE、FireFox、Opera、Chrome和Safari浏览器使用变量标记方式。

2、引用计数。增加一次引用+1,引用改变或该值被赋予另一个变量,则引用次数-1。当引用计数为0时,收回变量。

BOM对象和DOM对象会存在循环引用问题,需要在最后给引用赋值为null。

 

IE采用临界值的办法确定何时进行垃圾收集。具体点说就是256个变量,4096个对象或数组,64KB的字符串。

达到上述中任何一个,就启动垃圾收集。

但是如果一个脚本中就保有为数如此多的变量,那么垃圾收集器就不停运行,造成麻烦。

IE7中进行动态临界值的更改。

 在IE中,调用wondow.CollectGarbage()方法可以启动垃圾收集,在Opera7以及更高版本中,window.opera.collect()也会启动垃圾收集。

 

局部变量自动解除引用,全局变量手动解除引用:

function createPerson(name){

var localPerson=new Object();

localPerson.name=name;

return localPerson;        //局部变量自动解除引用

}

var globalPerson=createPerson("Nicholas");

globalPerson=null;

转载于:https://www.cnblogs.com/ballad1939/archive/2012/01/19/2327382.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值