前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript垃圾收集

JavaScript垃圾收集

作者头像
水击三千
发布2018-02-27 17:49:36
6030
发布2018-02-27 17:49:36
举报
文章被收录于专栏:水击三千水击三千

JavaScript具有自动收集垃圾的机制,也就是说执行环境会负责管理代码执行过程中的内存。JavaScript的内存分配以及内存的回收都是自动。垃圾回收机制:找到不再使用的变量,然后释放其占用的内存。

垃圾回收器会按照固定的时间间隔执行这一操作。

局部变量的生命周期,局部变量只在函数执行过程中存在,会为局部变量在栈(堆)内存上分配相应的空间,以便存储值。在函数中使用这些变量,直至函数执行结束。此时,局部变量就没有存在的必要了,可以释放他们的内存。在这种情况下,很容易判断变量是否还有存在的必要;但不是所有情况都很容易判断变量的存在。垃圾回收器会跟踪变量的使用情况,对于不再使用的变量将进行标记,以备将来回收。

标记清除

标记清除是垃圾回收器常用的策略,当变量进入环境时,就将这个变量标记为“进入环境”。从逻辑上将,不能释放被标记为“进入环境”的变量,因为执行流进入到环境,就可能会使用到这些变量。当执行流离开环境,则将变量标记为“离开环境”。

垃圾回收器在运行的时候会给存储在内存中的所有变量加上标记,然后去掉环境中的变量以及被环境中变量引用的变量的标记。再被加上标记的变量将被视为准备删除的变量。最好垃圾回收器完成内存清除工作,销毁带标记的值并回收内存空间。

垃圾回收器是周期性运行的,如果为变量分配的大量内存空间,那么内存的回收工作了也是相当大。

 内存限制问题不仅会影响变量的内存分配,同时还会影响调用栈以及在一个线程中能够同时执行的语句数量。因为,确保占用最少的内存,可以页面获得更好的性能。优化内存的方式,就是只保存必要的数据。数据不在使用的话,手动置为null,适用于大部分的全局变量。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档