- 内存生命周期
- 分配内存:声明变量、函数、对象时候,系统自动分配内存;
- 使用内存:读写内存
- 释放内存:使用完毕,由垃圾回收机制自动回收不再使用的内存;
- 引用计数垃圾回收1.0;
- a=b;b=a一直不会被清理,造成内存泄漏;
- 标记清楚算法2.0;
- 所有变量加标记;
- 根部触发将触及到的对象的标记清除;
- 还存在标记的变量被视为准备删除;
- 最后垃圾回收器清楚销毁标记的值回收他们的内存;
- {a=b b=a}从全局对象出发无法再获取他们的引用,因此会被回收;
- 内存泄漏:
- 程序运行需要内存,对于持续运行的服务进程,必须及时释放不再用到内存,否则内存将预占越高。轻者影响系统性能,重则导致进程崩溃。
内存泄漏:就是由于疏忽或错误造成程序未能及时释放内存,造成的内存的浪费。 - 通过谷歌F12
- 常见内存泄漏案例
- 意外全局变量:
- 被遗忘的定时器;
- 闭包;
- dom引用;
- 死循环