JS从0开始(十九)垃圾回收机制、变量生命周期

149 阅读1分钟

一.垃圾回收机制

JS引擎里面内置了垃圾回收机制,不需要手动去配置
在执行时它负责管理代码执行过程中使用的内存(变量、函数)
垃圾回收机制原理:
1.找出不再使用的变量
2.释放其占用的内存
3.固定的时间间隔运行

JS垃圾回收机制并不是某一个变量进行处理,而是对内存中存储的值进行处理

垃圾回收机制内部原理: 给变量打上标记:

  /标记清除 mark and sweep
  function test() {
    var a = 0; /test在执行的时候 声明变量 -->给变量打上一个标记:进入环境
  }
  
  test();  /当test执行完了 --> a标记为:离开环境 ,排除:全局变量、闭包的AO中的变量
  var b = 0;
  var c = 1;
  function e() {

  }

垃圾回收器在一个周期时 看到有离开环境标记的 就清除,并回收它们所占用的内存空间

垃圾回收机制的另一种方法(不常见):引用计数

引用计数 reference counting : 对引用值进行计数来进行垃圾回收。
根据记录每个值被引用的次数(次数为0回收,不为0就不回收)

二.变量声明周期

1.局部变量只在函数执行过程中存在 ; 全局变量一直存在,随时被调用
2.函数执行过程中,局部变量存储在堆或者栈中(原始值在栈、引用值在堆)