JS垃圾收集机制
2018-09-30 00:28
246 查看
JS 具有自动垃圾回收机制,不需要像C++/C等语言去手动跟踪内存使用情况。
垃圾收集方式:
1.标记清除: 垃圾收集器在运行时给存储在内存中的所有变量都加上标记,然后,它会去掉环境中的变量,以及被环境中变量引用的变量的标记。而之后被标记的变量将为准备删除的变量,原因是环境中已经无法访问到这些变量了。最后,垃圾收集器完成内存清除工作,消除那些标记的值被回收内存空间
2.引用计数,跟踪每个值被引用的次数
当声明了一个变量并将引用类型值赋给它的时候,则这个值引用次数就为1,如果同一个值又被赋给另一个变量,则引用次数加1.反之,如果引用这个值的变量又取得了另一个值,则这个值引用次数减1
当这个值引用次数为0时,说明无法再访问这个值了,因而就可以将其内存空间收回来
引用计数缺点:
循环引用会导致内存严重泄漏。
例如:
function problem(){
var object1 = new Object();
var object2 = new Object();
object1.some = object2;
object2.another = object1;
}
如上述,两个对象通过属性互相引用,则两个对象引用次数都是2;函数执行完后,对象仍存在,若多次调用,则浪费大量内存。
为了避免,可以手动断开对象间的相互引用,即
object1.some = null;
object2.another = null;
相关文章推荐
- js垃圾收集机制
- 垃圾收集机制
- Java虚拟机(五)——垃圾收集机制
- 了解的垃圾收集机制(转一)
- 转载和积累系列 - js中的垃圾回收机制
- php垃圾收集机制
- 浅谈javascript垃圾收集机制
- js中的垃圾回收机制
- 【深入Java虚拟机】之八:Java垃圾收集机制
- 浅谈js中的垃圾两种回收机制
- js的垃圾回收机制
- ART运行时垃圾收集机制简要介绍和学习计划
- what’s new in the .NET CLR 4.0/4.5 GC (.NET 4/4.5里新的垃圾收集机制)
- Java垃圾收集机制
- Sunjava虚拟机和Bea JRockit虚拟机垃圾收集器--gc的机制详解
- 垃圾收集机制(Garbage Collection)批判
- LT【深入Java虚拟机】之八:Java垃圾收集机制
- 漫谈.Net中的自动垃圾收集(Garbage Collection)机制(转)
- JAVA垃圾收集机制剖析
- 【深入Java虚拟机】之八:Java垃圾收集机制