js的垃圾回收机制和内存泄漏的问题

142 阅读1分钟

js的垃圾回收机制

js代码中,每声明一个变量,系统会自动开辟一个内存空间进行存储,js会周期性的检查没有使用的变量,并自动回收释放这些变量所占的内存,这一过程称为js的垃圾回收机制

  js内存分配机制:
  
      1. js基本的数据类型: 占据固定的大小空间,存放在栈中;
      
      2. 引用类型(arry/obj等): 存放在堆中;

内存泄漏

内存泄漏定义为程序不再使用或不需要的一块内存,但是由于某种原因没有被释放仍然被不必要的占有。在代码中创建对象和变量会占用内存,虽然js有垃圾回收机制,但是当js有逻辑缺陷时,一些不必要的变量还在引用,程序运行完成后没有及时的释放内存,长久运行程序,不必要的内存占用越多,电脑可能会出现,性能不佳,高延迟等现象;

js中常见的内存泄漏

1. 变量没有被声明,但是被全局的函数使用,变量会在全局对象window中创建;
2. setInterval定时器没有被清除, 回调函数无法回收;
3. 逻辑不正确的闭包函数;

引用文章: juejin.cn/post/684490…