垃圾回收机制
- 什么是垃圾回收机制:
- 解释:执行环境负责管理代码执行过程中使用的内存。JS的垃圾回收机制是为了以防内存泄漏,简单来说就是:间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。
- 什么是内存泄漏:
- 解释:是指不再用的内存没有被垃圾回收机制及时释放出来,导致该段内存无法再使用,积少成多,导致系统越来越卡,直至崩溃。
- 什么会引起内存泄漏:
- 1、:意外的全局变量引起的内存泄露
- 2、:闭包(慎用闭包,除非你很明确你的意图)
- 3、:没有清理的 DOM 元素引用
- 4、:遗忘的定时器或者回调
- 怎样避免内存泄漏:
- 1、:慎用闭包
- 2、:逻辑清晰,避免“死循环”之类的
- 3、:减少不必要的全局变量
- 4、:避免创建过多的对象
垃圾回收策略
- 标记清除法:垃圾回收机制获取根并标记它们,然后访问并标记所有来自它们的引用,然后再访问这些对象并标记它们的引用…如此递进结束后若发现没有标记的则进行删除,进入执行环境的不能删除。
- 引用计数法:当声明一个变量并给该变量赋值一个引用类型的值时候,该值的计数+1,当该值赋值给另一个变量的时候该计数+1,当该值被其他值取代的时候,该计数-1,当计数为0时,说明无法访问该值,垃圾回收机制则清除该对象。
- 引用计数法缺点:当两个对象循环引用的时候,引用计数法无计可施。如果循环引用多次执行的话,会造成崩溃等问题,后被标记清除法取代。