Javascript的垃圾回收机制

为避免内存泄露,JavaScript 具有垃圾收集机制。

内存泄漏:指由于疏忽或错误造成程序未能释放已经不再使用的内存。一直占用内存,造成物理内存溢出。

垃圾收集机制:指管理代码执行过程中使用的内存,找出那些不在继续使用的变量,然后释放其内存。但是这个过程不是实时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行。


具体体现

函数内部的局部变量,待该函数执行完毕,执行过程中所造成的内存将被释放。

全局变量直到浏览器卸载页面才会被释放内存。

闭包中由于内部函数的原因,外部函数并不能算是结束。


标记清除

垃圾回收器在运行时候会给储存在内存中的所有变量都加上标记。然后,它会去掉环境中的变量以及被环境中的变量引用的变量的标记(闭包)。

余下的变量将被视为准备删除的变量(原因:环境中的变量已经无法访问这些变量了)。

最后,垃圾回收器完成内存清除工作,销毁那些带标记的值并回收它们所占用的内存空间。


如何优化内存分配?

全局变量只保存必要的数据;

若无必要保存数据,采用局部变量存储;

一旦数据不再有用,最好将值设置为 null(解除引用)。

你可能感兴趣的:(Javascript的垃圾回收机制)