说说 JavaScript 中内存泄漏的几种情况?

目录标题

  • 一、什么是内存泄漏
  • 二、垃圾回收机制
      • 小结
  • 三、常见的内存泄漏情况

一、什么是内存泄漏

内存泄漏是在计算机科学中,由于疏忽或错误造成未能释放已经不再使用的内存。

并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。

程序的运行需要内存。只要程序提出要求,操作系统或者运行时就必须供给内存

对于持续运行的服务进程,必须及时释放不再用到的内存。否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃

二、垃圾回收机制

Javascript 具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存

原理:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存

通常情况下有两种实现方式:

  • 标记清除
  • 引用计数

小结

有了垃圾回收机制,不代表不用关注内存泄露。那些很占空间的值,一旦不再用到,需要检查是否还存在对它们的引用。如果是的话,就必须手动解除引用

三、常见的内存泄漏情况

  • 意外的全局变量(另一种意外的全局变量可能由this创建)。

    使用严格模式,可以避免意外的全局变量。

  • 定时器也会造成内存泄漏

  • 没有清理对DOM元素的引用也会造成内存泄漏

  • 闭包也会造成内存泄漏

你可能感兴趣的:(JavaScript,javascript)