什么是垃圾回收(GC)?
程序在运行的过程中会产生垃圾,这些垃圾积攒的太多了,就会导致程序运行的速度过慢,因此我们就需要一个垃圾回收的机制,来处理程序运行过程中产生垃圾。
什么是“垃圾”?
当一个对象没有任何的变量或是属性对它进行引用,此时我们就永远无法操作该对象,该对象就是一个垃圾,这种对象过多的话就会占用大量的内存空间,导致运行程序变慢,这种垃圾就必须进行清理。
JS中的垃圾回收机制
在JS中拥有自动的垃圾回收机制,会自动将这些垃圾对象从内存中销毁,我们不需要也不能进行垃圾回收的操作,我们仅需将我们不再使用的对象设置为null即可。
垃圾收集策略
对于局部变量来说,它只在函数执行的过程中存在,在这个过程中,会为局部变量在栈(或堆)内存上分配相应的空间来存储他们的值,在函数执行过程中我们可以使用这个值,函数执行结束后,这个局部变量就没有存在的意义了,因此可以释放它们的内存以供将来使用,这种情况可以很容易判断变量是否有存在的意义,而有一些情况我们没有那么容易判断。垃圾回收收集器就需要跟踪变量,将不再有用的变量作一个标记。具体到浏览器中的实现通常情况下有两种策略。