标签:一个 就会 垃圾 访问 空间 闭包 size http 遇到
推荐阅读:《JS 闯关记》之垃圾回收和内存管理
常见的垃圾回收有2种策略:标记清除 和 引用计数
标记清除
把内存里面的所有变量都打上标记,然后,去掉环境中的变量以及被环境中的变量引用的变量的标记。
还保留着标记的变量意味着已经无法访问到。
等到垃圾回收执行的时候,垃圾回收器会把带标记的变量回收。
引用计数
声明一个变量,并将一个引用类型值赋给该变量,那么这个值的引用次数就是1,同理,之后如果还有变量引用它,引用次数会+1,变量取消引用的话引用次数减1。
等到垃圾回收执行的时候,垃圾回收器会把引用次数为0的变量回收。
ps: 早期很多浏览器使用引用计数策略,但是后来出现循环引用的问题,现代浏览器都纷纷采用标记清除法了
优化代码策略
我们往往会遇到一些内存泄露的问题,就是一些变量我们不在用了,但是还是保留着。最常见的就是一些全局变量和一些闭包变量,我们应该尽可能的把不需要再用到的变量置空。
例如本来let a = {name: ‘rick‘},我们不要的用的时候把a = null。这样下次执行垃圾回收的时候,垃圾回收器就会把{name: ‘rick‘}占用的空间给释放。
标签:一个 就会 垃圾 访问 空间 闭包 size http 遇到
原文地址:https://www.cnblogs.com/amiezhang/p/11273400.html