垃圾回收机制
垃圾回收机制:
- 是对内存中存储的值进行处理,回收不再使用的值;
- js不需要手动回收变量,js引擎会自动回收变量;
垃圾回收原理:
1. 找出不再使用的变量
2. 释放其占用内存
3. 固定的时间间隔运行;
(理解成对内存中的值,进行处理)
垃圾回收的方式有:?
标记清除方式,引用计数方式
标记清除的方式:mark and sweep
进入环境标记
离开环境标记
function test(){
var a = 0; //进入环境标记;
}
test(); //a 离开环境标记
引用计数回收的方式:
通过引用计数,当引用计数为0时,回收变量;
如ie6低版本的内存回收方式;
function test(){
var a = new Object(); // a引用 = 1
var b = new Object(); // b引用 = 1
var c = a; // a++ a = 2
var c = b; //a-- a = 1
//特殊的情况,循环引用
a.prop = b; //a = 2
b.prop = a; //b = 2
这种情况需要解除引用
a = null;
b = null;
}
垃圾回收的过程:
首先排除全局变量和闭包带出来的变量;
然后清除其余所有有离开环境标记的值,并回收它们所占用的内存空间;
(几乎所有浏览器都在使用,标记清除的方式; 但ie6低版本不是这种方式;)
变量的声明周期:
一般讨论函数内部的局部变量的生命周期:
在函数执行的时候变量被创建,在函数执行结束的时候,变量回收;
怎样解除闭包的引用:
test3 = null; //test3是保存闭包的函数;