js的垃圾回收

推荐阅读:《JS 闯关记》之垃圾回收和内存管理

常见的垃圾回收有2种策略:标记清除 和 引用计数

标记清除

把内存里面的所有变量都打上标记,然后,去掉环境中的变量以及被环境中的变量引用的变量的标记。

还保留着标记的变量意味着已经无法访问到。

等到垃圾回收执行的时候,垃圾回收器会把带标记的变量回收。

引用计数

声明一个变量,并将一个引用类型值赋给该变量,那么这个值的引用次数就是1,同理,之后如果还有变量引用它,引用次数会+1,变量取消引用的话引用次数减1。

等到垃圾回收执行的时候,垃圾回收器会把引用次数为0的变量回收。

ps: 早期很多浏览器使用引用计数策略,但是后来出现循环引用的问题,现代浏览器都纷纷采用标记清除法了

优化代码策略

我们往往会遇到一些内存泄露的问题,就是一些变量我们不在用了,但是还是保留着。最常见的就是一些全局变量和一些闭包变量,我们应该尽可能的把不需要再用到的变量置空。

例如本来let a = {name: 'rick'},我们不要的用的时候把a = null。这样下次执行垃圾回收的时候,垃圾回收器就会把{name: 'rick'}占用的空间给释放。

猜你喜欢

转载自www.cnblogs.com/amiezhang/p/11273400.html