内存泄露
什么是内存泄露?
内存泄露就是应用程序不再需要占用内存的时候,由于某些原因,内存没有被操作系统或可用内存池回收。这句话对于所有需要GC的语言都适用,当然包括JS。
JS的内存回收方法主要就是“标记清除”和“引用计数”。
如何判断内存泄露?
经验法则是,如果连续五次垃圾回收之后,内存占用一次比一次大,就有内存泄漏。这就要求实时查看内存占用。
查看内存可以使用chrome浏览器中的开发者工具,Performance页签可以进行内存快照的监控。
内存泄露的一般场景是什么?
1 意外的全局变量
2 被遗忘的计时器或回调函数
3 脱离 DOM 的引用
4 闭包
WeakSet 和 WeakMap
WeakSet 和 WeakMap就是弱引用,在java中也存在这个概念,就是该数据结构不会影响引用变量的计数次数。