一、什么是内存泄露
定义:内存泄露是指无用的对象,持续占用内存导致其无法正常释放,从而浪费内存空间的利用率的情况。
- C或者C++语言手动地去释放内存。
- JS通过引擎内置的GC(垃圾回收)机制来帮助我们回收无用的内存。
说来滑稽。 C和C++由于要人自己手动操作,其上限更高,下限更低。 JS则是下限较高,上限较低。 这种状况很像—— 相机与手机拍照。相机如果不对焦,不修后期,在照片效果上,是有可能输给手机智能对焦、优化后的照片的。对于拍照:相机的下限低、上限高;手机的下限高、上限低。
影响:内存泄露会带来怎样的影响?
- 内存不足会不断触发GC,GC是会阻塞主进程的 => 【JS是单线程的】 => 【全停顿】
解决时机:解决内存泄露的成本问题
由于内存泄露其实非常不好排查,所以,规范【编程】是最好的办法
从一开始就避免写造成内存泄露的代码,很有必要。
浏览器的内存泄漏主要靠调试找到,改代码解决