您的位置:首页 > Web前端 > JavaScript

JavaScript的垃圾回收

2016-07-21 18:01 302 查看
一.垃圾回收(GC)--周期性回收



原理找出不再使用的变量(生命周期结束),然后释放掉其占用的内存,但是这个过程不是时时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行;

生命周期:全局变量--全局销毁结束(退出浏览器);局部变量--当前函数执行完毕结束(闭包例外);

二.哪些方式



1.标记清除(2012年后所有现代标准浏览器都使用标记清除垃圾回收)

2.计数清除(低版本ie的内存泄漏)

三.两个问题

1.性能问题

     IE6中的垃圾回收器是根据内存分配量运行的:

       256个变量、4096个对象和数组元素、64KB的字符串,达到上述任意一个的临界值,垃圾回收器就会运行。这样就带来一个问题:脚本中本来就包含那么多的变量,那么垃圾回收器就会频繁地运行,严重影响性能。

       IE7对其垃圾回收器做了修改:

       临界值会动态的调正。

       垃圾回收器回收的内存低于15%时,那么临界值就会加倍;如果高于85%时,将各种临界值设为默认的。

2.管理内存

      防止运行js消耗过多内存而导致系统崩溃;

      (一).解除引用:

        优化内存的最佳方式,就是将不在需要用的数据设置null来释放其引用;

        适用于大部分的全局变量和全局对象的属性,局部变量会在他们离开执行环境时自动的解除引用;

        解除引用 !== 自动回收

        目的在于让值脱离执行环境,以便垃圾回收器下次运行时将其回收!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 内存 闭包