3>垃圾回收

77 阅读2分钟

垃圾回收策略

js是使用垃圾回收的语言,js会在代码执行时管理内存。当确定某个变量不会再使用,就会释放它占的内存。这个过程是周期性的,会每隔一段时间自动运行。


1> 标记清理

    js最常用的垃圾回收策略就是标记清理,这个过程大概是这样:
当垃圾回收运行的时候,会先把所有内存中的变量标记,再把上下文中的变量,以及上下文中变量引用的变量的标记清除,
剩下被标记的就是上下文中访问不到的,然后垃圾回收程序 做一次内存清理,清除标记并且把内存释放。

2> 引用计数

    js另一种不常用垃圾回收策略就是引用计数,这个过程大概是这样:
每个值都会记录它被引用的次数,当变量声明并赋一个引用值,这个值为1,如果同一个值被赋值给另一个变量,引用数+1,
如果保存该值的变量被 其他值覆盖了,引用数-1,当引用数为0时,就访问不到这个值了,那么垃圾回收程序就会释放
引用数为0的值 
但是引用计数在碰到相互引用的时候,他们的引用数不会为0,会造成循环引用,就不会被垃圾回收清除

2> 解除引用

    将内存占用量保持在一个较小的值可以让页面的性能更好,优化内存占用的 最佳手段就是保证执行代码时
只保存必要的数据。如果数据不再必要,那么把它设为null,这就是解除引用。
    解除引用并不会自动释放内存,解除引用的关键在于确保相关的值已经不在上下文中中,那么下次垃圾回收
时就会被回收