Javascript拥有自己的垃圾收集机制,因此我们省去了手工内存回收的问题。
这里简单的记录下关于这部分的内容
javascript有两种垃圾收集策略
一、 标记清除
该方法是在执行垃圾收集时先将内存中所有变量置位,然后去除执行环境及执行环境引用的变量,将其余变量视为无用变量予以收回。
小注:
目前大部分浏览器采用的方法,另外在程序中将不再用的变量置为null可以使垃圾回收器在下一次执行中立刻释放相应内存。
二、 引用计数
就是对变量的引用次数进行跟踪记录,当引用次数为0时视变量为不再用,予以内存收回。
小注:
由于循环引用问题会导致内存得不到释放,如果在循环规模比较大的情况下会导致浪费大量内存。例如:
Function test()
{
Var o1 = new Object();
Var o2 = new Object();
O1.obj = o2;
O2.obj = o1;
}
如程序中o1,o2的引用次数都为2, 函数结束时也不会减为0,所以内存得不到释放。
解决办法:
可以手工拆除循环引用。
O1.obj = o2.obj = null;