杂谈01、js垃圾回收机制

前端为什么关注内存

  • 防止页面占用内存过大,引起客户端卡顿,甚至无响应
  • Node.js使用V8引擎,内存对后端服务器性能至关重要,因为后端服务器的持久性,更容易造成内存溢出。

js的垃圾回收机制

  • 垃圾回收
    找出那些不再继续使用的变量,然后释放其所占用的内存,垃圾回收器会按照固定的时间间隔周期性地执行这一操作
    • 优势:可以大幅度简化程序的内部管理代码,减少因长时间运转而带来的内存泄露问题
    • 不足:无法掌控内存。js没有暴露任何内存的API,无法强迫和干预内存管理

垃圾回收方式

  • 引用计数器
    跟踪记录每个值被引用的次数,如果引用次数是0,则内存释放
    • 原理
      每次引用加一,释放减一,当次数变为0,则可以内存回收
let obj={a: 10};//+1
let obj1={a: 10};//+1
obj={};//-1
obj1=null;//-1
image.png
  • 标记清除


    image.png
image.png
image.png
function foo(){
  var a = 123;// 被标记进入环境
  var b =456;// 被标记进入环境
}
foo(); // 执行完毕,被标记执行完毕,内存被回收

剩下还有3中方式,写不动了

你可能感兴趣的:(杂谈01、js垃圾回收机制)