js垃圾回收机制

2019-10-16  本文已影响0人  木中木

我们都知道,JS是自动进行垃圾回收,回收算法有两种:标记清除和引用计数

那以上就是两种主要的垃圾回收算法,下面再说说平常比较容易出现内存泄露的地方

  1. 清空对应的dom的四号, 绑定事件未解绑,通过addEventListener为解绑
  2. 函数闭包变量为手动释放
  3. 集成框架中如react,在初始化的时候添加事件,在destroy的时候没有解绑事件
  4. setTimeout/setInterval,定时器用完没有clear掉
  5. 全局对象,特别是未定义的全局变量
  6. 死循环
  7. 循环引用,比如A对象中引用B对象,B对象引用A对象。
const A = {};
const B = {A};
const A.B = B;

性能问题
垃圾收集器是周期性运行的,而且如果为变量分配的内存数量很可观,那么回收工作量也是相当大的.在这种情况下,确定垃圾收集的时间间隔是一个非常重要的问题.

IE7发布的时候,其 JavaScript 引擎的垃圾收集例程改变了工作方式:触发垃圾收集的变量分配,字面量和(或)数组元素的临界值被调整为动态修正.IE7 中的各项临界值在初始时与 IE6 相等.如果垃圾收集例程回收的内存分配量低于 15%,则变量,字面量和(或)数组元素的临界值就会加倍.如果例程回收了 85%的内存分配量,则将各种临界值重置回默认值.

上一篇下一篇

猜你喜欢

热点阅读