一、什么是内存泄露

定义:内存泄露是指无用的对象,持续占用内存导致其无法正常释放,从而浪费内存空间的利用率的情况。

  • C或者C++语言手动地去释放内存。
  • JS通过引擎内置的GC(垃圾回收)机制来帮助我们回收无用的内存。

说来滑稽。 C和C++由于要人自己手动操作,其上限更高,下限更低。 JS则是下限较高,上限较低。 这种状况很像—— 相机与手机拍照。相机如果不对焦,不修后期,在照片效果上,是有可能输给手机智能对焦、优化后的照片的。对于拍照:相机的下限低、上限高;手机的下限高、上限低。

影响:内存泄露会带来怎样的影响?

  • 内存不足会不断触发GC,GC是会阻塞主进程的 => 【JS是单线程的】 => 【全停顿】

知识图谱: JS与内存泄露 - 图1

解决时机:解决内存泄露的成本问题

  • 由于内存泄露其实非常不好排查,所以,规范【编程】是最好的办法

    从一开始就避免写造成内存泄露的代码,很有必要。

  • 浏览器的内存泄漏主要靠调试找到,改代码解决

二、如何排查内存泄露

三、有哪些常见的内存泄漏