042|JavaScript垃圾回收

通过前面的学习,我们已经知道在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闭包?
什么是索引容器?
什么是键容器?

你可能感兴趣的:(042|JavaScript垃圾回收)