浅谈浏览器垃圾回收机制
javaScriipt 使用垃圾回收机制来自动管理内存
js 的回收机制目前分为两种方式:1.标记清除(各大浏览器主流算法)2.引用技术
一: 标记清除
这种算法的思想是给当前不使用的值加上标记,然后再回收其内存
算法流程:
1.浏览器再运行的时候会给存储再内存中的所有变量都加上标记
2.去掉环境中的变量以及被环境中引用的变量的标记
3.如果还有变量有标记,就会被视为准备删除的变量
4.垃圾回收机制完成内存的清除工作,销毁那些带标记的变量,并回收他们所占用的内存空间
二:引用计数
这种算法的思想是跟踪记录所有值被引用的次数。javaScript 引擎目前都不再使用这种算法,但再IE 中访问非原生JavaScriopt 对象(如DOM元素)时,这种算法任然可能会导致问题
当代码中存在循环引用现象时,引用计数算法就会导致问题
解除变量的引用不仅可以帮于消除循环引用现象(一个变量使用完之后赋值为null),而且对垃圾收集也有好处。为了确保有效的回收内存,应该及时解除不再使用的全局对象、全局对象属性以及循环引用变量的引用
算法流程:
1.声明了一个变量并将一个引用类型的值赋值给这个变量,这个引用类型值引用次数就是1
2.同一个值又被赋值另一个变量,这个引用类型的值引用次数加1
3.当包含这个引用类型值得变量又被赋值另一个值了,那么这个引用类型的值的引用次数减一
4.当引用次数变成0时, 说明这个值需要解除引用
5.当垃圾回收机制下次运行时,它就会释放引用次数为0 的值所占用的内存
赞 (0)