通过前面的学习,我们已经知道在JavaScritp可以创建对象。每创建一个对象,都需要消费一些内存。那么如何才能释放内存呢?
JavaScript采用垃圾回收机制,对象的释放由JavaScript引擎控制。当JavaScript检测到一个对象或数据代码已无法引用到时,这个对象或数据占用的内存将会被释放。比如下面的代码:
function sayHi()
{
var text = "Hello world!"
console.log(text)
}
sayHi()
// 这里,text已无法被引用到
上述代码中,当sayHi()函数中创建了一个“Hello world!”Strng字面值。当sayHi运行完毕后,text变量已无法再被引用到,因此JavaScript引擎将会把text标识为垃圾,在未来的某一时刻回收该内存。
注意,sayHi()执行完毕后,并不意味着text被立即释放。sayHi()执行完毕,意味着text被标识为垃圾,占用的内存将在今后某个时刻回收。
这种将当对象无法被引用到时就标致为垃圾等待回收的算法,叫做Mark-and-sweep。
在过去,有一些老的浏览器,会采用引用计数机制来判定垃圾。这种过时的垃圾判断法存在循环引用问题。
引用算法已经过时。本课程中不再详细介绍。
庆幸的是,在目前所有JavaScript环境中,都无需再担心上述问题。JavaScript先进的垃圾回收帮你解决了上述问题。
OK,完结。
什么是JavaScript闭包?
什么是索引容器?
什么是键容器?