JS垃圾回收机制
基本思路:确定哪个变量不在使用,然后释放它所在的内存。这个过程是周期性的,即垃圾回收程序是每隔一定时间就会自动执行。
再浏览器的发展历史上,用到过两种主要的标记策略:标记清理和引用计数。
标记清理
原理:垃圾回收程序运行的时候,会标记内存中存储的所有变量(标记方法又很多)。然后,它会把存在于所有上下文中的变量以及上下文中变量中引用的变量的标记去掉。之后还有标记的变量就是待删除的了。随后,垃圾回收程序会销毁带标记的所有值并收回它们的内存。
引用计数
原理:声明变量并且给它赋值一个引用值得时候,这个值得引用值为1,如果同一个值又被赋值给别得变量,那么引用计数就加1,如果保存对该值引用的变量被其他值覆盖了,那么就减1,当一个值得引用值为0的时候,就说明没办法再访问到这个值了,因此垃圾回收程序回进行回收它们的内存。