前端为什么关注内存
- 防止页面占用内存过大,引起客户端卡顿,甚至无响应
- Node.js使用V8引擎,内存对后端服务器性能至关重要,因为后端服务器的持久性,更容易造成内存溢出。
js的垃圾回收机制
- 垃圾回收
找出那些不再继续使用的变量,然后释放其所占用的内存,垃圾回收器会按照固定的时间间隔周期性地执行这一操作- 优势:可以大幅度简化程序的内部管理代码,减少因长时间运转而带来的内存泄露问题
- 不足:无法掌控内存。js没有暴露任何内存的API,无法强迫和干预内存管理
垃圾回收方式
- 引用计数器
跟踪记录每个值被引用的次数,如果引用次数是0,则内存释放- 原理
每次引用加一,释放减一,当次数变为0,则可以内存回收
- 原理
let obj={a: 10};//+1
let obj1={a: 10};//+1
obj={};//-1
obj1=null;//-1
-
标记清除
function foo(){
var a = 123;// 被标记进入环境
var b =456;// 被标记进入环境
}
foo(); // 执行完毕,被标记执行完毕,内存被回收
剩下还有3中方式,写不动了