Javascript垃圾回收机制
Javascript具有自动垃圾收集机制(GC:Garbage Collection)。这种垃圾收集机制的原理很简单:找出那些不再继续使用的变量,然后释放其占用的内存。垃圾收集器会按照固定的时间间隔,周期性的执行这一操作。
javascript中最常用的垃圾收集方式是标记清除(mark-and-sweep)。当变量进入环境时,就将这个变量标记为“进入环境”,而当变量离开环境时,这将其标记为“离开环境”。打上“离开环境”标记的变量,会在垃圾回收器执行操作时从删除其占用的空间。总之,GC会自动回收那些没有被引用的对象。
实例1:
function func(){
var arr= ["value1","value2"];
return arr;
}
var m = func();
alert(m);//value1,value2
1
2
3
4
5
6
7
2
3
4
5
6
7
实例2:
function outerFunc(){
var num= 10;
function innerFunc(){
num *= 2;
return num;
}
return innerFunc;
}
//将innerFunc函数赋值给refInnerFunc
var refInnerFunc = outerFunc();
refInnerFunc(); // return 20 变量num依然存在内存中,并可被innerFunc访问并修改
refInnerFunc(); // return 40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
在执行完outerFunc()函数后,其局部变量num并没有被GC回收,而是一直存在内存中,因为在innerFunc中一直保存着对num的引用,所以num不会被GC回收。
上次更新: 2022/12/01, 11:09:34