要知道什么是垃圾回收机制,就得先知道垃圾回收机制是干嘛的。
平常我们在编写js代码时,可能代码中的某些对象对我们的程序没有任何帮助,但却占用了内存。这时候我们就要想办法清楚这部分内存,这就是js垃圾回收机制的作用。
那它是如何作用的呢?
标记-清除
JavaScript 中内存管理的主要概念是可达性。
简单地说,“可达性” 值就是那些以某种方式可访问或可用的值,它们被保证存储在内存中。
1. 有一组基本的固有可达值,由于显而易见的原因无法删除。例如:
- 本地函数的局部变量和参数
- 当前嵌套调用链上的其他函数的变量和参数
- 全局变量
- 还有一些其他的,内部的
这些值称为根。
2. 如果引用或引用链可以从根访问任何其他值,则认为该值是可访问的。
而那些无法到达的值,则会被清除
但这种机制有漏洞,导致无法清除某些内存,这种现象叫做内存泄漏
内存泄漏产生的原因是:
当我们无法访问某个对象时,但垃圾回收机制却认为该对象能被引用,导致这段内存无法被释放,从而造成了内存泄漏