JavaScript高级程序设计(第2版) 之 JavaScript垃圾收集

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;

原文地址:https://www.cnblogs.com/lyroge/p/2119629.html