js的垃圾收集机制

2017-11-27 23:35:50 3,818 views

js具有自动垃圾收集机制,执行环境会负责管理代码执行过程中使用的内存。

原理:

找出那些不再继续使用的变量,然后释放其占用的内存。为此,垃圾收集器会按照固定的时间间隔,周期性的执行这一操作
不再使用的变量也就是生命周期结束的变量,当然只可能是局部变量,全局变量的生命周期直至浏览器卸载页面才会结束。局部变量只在函数的执行过程中存在,而在这个过程中会为局部变量在栈或堆上分配相应的空间, 以存储它们的值,然后再函数中使用这些变量,直至函数结束(闭包中由于内部函数的原因,外部函数并不能算是结束)

js常用的为标记清除

给当前不使用的值加上标记,然后再回收其内存

引用计数

这种算法的思想是跟踪记录所有值被引用的次数。js目前不再使用这种算法。但在ie中访问非原生js对象(如dom对象)时,可能会导致问题
当代码中存在循环引用现象时,引用计数算法就会导致问题

管理内存

解除一个值的引用并不意味着自动回收该值所占用的内存。解除引用的真正作用是让值脱离执行环境,以便垃圾收集器下次运行时将其回收。
 
解除变量的引用:不仅有利于消除循环引用现象,而且对垃圾收集也有好处。为了确保有效地回收内存,应该及时解除不再使用的全局对象,全局对象属性以及循环引用变量的引用

0

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。