javascript具有自动垃圾回收机制,即GC(Garbage Collection),垃圾回收器会按照固定的时间间隔周期性的执行垃圾回收。
垃圾回收有两种常见做法:
1. 标记清除(多数浏览器使用此策略,其执行GC的时间间隔不同)
当变量进入环境时候,例如,在函数中声明一个变量,就将此变量标记为“进入环境”。当变量离开环境时候,将其标记为“离开环境”。
垃圾回收器会给所有变量加上标记,然后,去掉环境中的变量以及被环境中的变量引用的变量的标记。而后,这些仍然有标记的变量
就是待回收的变量。在下一次GC时候,销毁带有标记的变量
2. 引用计数
追踪每个值被引用的次数,当一个值的引用次数为0,其就是待回收的值。会在下一次GC时候,清理掉该值