JavaScript 内存管理和闭包
JavaScript 的内存管理
JavaScript 会在定义变量时为变量分配内存
- JS 对于基本数据类型(boolean、string、number、null、undefined)直接在栈空间进行分配;
- JS 对于复杂数据类型(object)内存分配会在堆空间开辟一块空间,并将这块空间的地址返回给变量引用。
JavaScript 的垃圾回收(GC)机制
JS 会将不再使用的对象将其所占的内存空间释放出来。(GC 算法)
常见的 GC 算法
- 引用计数:当一个对象有一个引用指向时,对应的计数器+1,当计数器的值为 0 的时候,说明没有引用指向这个对象,那么这个对象就可以被回收掉。**缺点:**循环引用。
- 标记清除:从根对象开始,查找所有可以从这个根开始可以到达的对象,那么就是可以的,扫描不到的,那么这个对象是不可以用的,这个对象就可以被回收。 </