Bootstrap

JavaScript内存管理、闭包和内存泄漏

在这里插入图片描述

JavaScript 的内存管理

JavaScript 会在定义变量时为变量分配内存

  • JS 对于基本数据类型(boolean、string、number、null、undefined)直接在栈空间进行分配;
  • JS 对于复杂数据类型(object)内存分配会在堆空间开辟一块空间,并将这块空间的地址返回给变量引用。

JavaScript 的垃圾回收(GC)机制
JS 会将不再使用的对象将其所占的内存空间释放出来。(GC 算法)

常见的 GC 算法

  • 引用计数:当一个对象有一个引用指向时,对应的计数器+1,当计数器的值为 0 的时候,说明没有引用指向这个对象,那么这个对象就可以被回收掉。**缺点:**循环引用。
  • 标记清除:从根对象开始,查找所有可以从这个根开始可以到达的对象,那么就是可以的,扫描不到的,那么这个对象是不可以用的,这个对象就可以被回收。
  • </
;