javascript垃圾收集

本文介绍了JavaScript中的垃圾收集机制,包括标记清除和引用计数两种主要方式,并探讨了循环引用问题及解决方法。

javascript具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。

垃圾收集机制的原理:找出那些不再继续使用的变量,然后释放其占用的空间。为此,垃圾收集器会按照固定的时间间隔,周期性地执行这一操作。

1.标记清除

Javascript最常用的垃圾收集方式是标记清除。当变量进入环境时,就将这个变量标记为“进入环境”。而当变量离开环境时,则将其标记为“离开环境”。

2.引用计数

引用计数的含义是跟踪记录每个值被引用的次数。

当声明了一个变量并将一个引用类型赋值给该变量时,则这个值的引用次数就是1。如果同一个值又被赋给另一个变量,则该值引用次数又加1 。相反,如果包含对这个值引用的变量又取得了另一个值,则这个值的引用次数减1。当这个值的引用次数变成0时,则说明没有办法再访问这个值了,因而就可以将其占用的 内存空间回收回来。

        fucnction problem(){
        	var objectA = new Object();
        	var objectB = new Object();

        	objectA.someOtherObject = objectB;
        	objectB.someOtherObject = objectA;
        }

objectA和objectB通过各自的属性相互引用,这 两个对象的引用次数都是2 。

    var element = document.getElementById("some_element");
    var myObject = new Object();
    myObject.element = element;
    element.someObject = myObject;

 这个例子存在循环使用,它永远不会被回收。

可以如下处理:

    myObject.element = null;
    element.someObject = null;

将变量设置为Null切断他们之间的连接。

3.性能问题

垃圾收集是周期性运行的,确定垃圾收集的时间间隔是一个非常重要的问题。垃圾收集器根据内存分配量运行的,具体一点说就是256个变量,4096 个对象,或者64KB的字符串。达到上述任一个临界值,垃圾回收机制就会运行。

4管理内存

分配给浏览器可用内存数量通常要比桌面应用少。这样做的目的是出于安全方面的考虑,避免浏览器页面耗尽 全部系统内存而导致系统崩溃。

因此确保占用最少的内在可以让页面 获得更好的性能。而优化内存占用的最佳方式,就是为执行中的代码只保存必要的数据。一量数据不再有用,通过将其值设置为null来释放其引用--这个做法叫解除引用。这一做法适用于大多数全局变量和全局对象。局部变量会在离开执行环境时自动解除引用。

    function createPerson(name){
    	var localPerson = new Object();
    	localPerson.name = nane;
    	return localPerson;
    }
    var globalPerson = createPerson("Jin");
    globalPerson = null;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值