内存泄漏
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
在不同的 JavaScript 解释器实现中,由于解释器本身的缺陷,使用闭包可能造成内存泄漏,内存泄漏是比较严重的问题,会严重影响浏览器的响应速度,降低用户体验,甚至会造成浏览器无响应等现象。
JavaScript 的解释器都具备垃圾回收机制,一般采用的是引用计数的形式,如果一个对象的引用计数为零,则垃圾回收机制会将其回收,这个过程是自动的。但是,有了闭包的 概念之后,这个过程就变得复杂起来了,在闭包中,因为局部的变量可能在将来的某些时刻 需要被使用,因此垃圾回收机制不会处理这些被外部引用到的局部变量,而如果出现循环引 用,即对象 A 引用 B,B 引用 C,而 C 又引用到 A,这样的情况使得垃圾回收机制得出其 引用计数不为零的结论,从而造成内存泄漏。
在线练习
{$ activeFileHint $}