javascript - js中关于清空数组释放内存的问题
天蓬老师
天蓬老师 2017-04-11 13:05:24
[JavaScript讨论组]
  1. 为什么数组清空后内存需要差不多一分钟的时间才会回落,而不是立马回落?

  2. 垃圾回收是有时间周期的?

  3. 有什么方法可以在清空数组后快速释放内存吗? 尝试用了arr.length=0和 arr = []来清空数组
    但是都得一分钟的时间才会完全释放内存

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(3)
阿神

js的垃圾回收是自动的,是周期性的回收不再使用的变量,我们可以不用管它.
目前主流使用的方法是标志-清除(mark-and-sweep)法

摘自MDN
从2012年起,所有现代浏览器都使用了标记-清除垃圾回收算法。

注意无论null还是delete都不能立刻释放,都是要等到回收周期的.

当然你要手动触发的话可以看看这个:https://github.com/cssmagic/b...
但是都只是提供给你做做测试之类的

回答一,二:没错,是有周期的,所以不是立马回落
回答三:只能尽快,但是还是等GC周期,相关资料你可以去看一下mdn,里面写的很清楚,你无论做了什么操作,都只是让值脱离了运行环境,告诉垃圾回收器你可以回收了而已,可以参考资料:http://www.cnblogs.com/dolphi...

阿神

GC是一个极其复杂的东西,什么时候回收这个你是决定不了的。

可以稍微了解一下
V8垃圾回收

大家讲道理

听别人说将变量设置成null,可以办到(也就是arr = null),不过我没有测试过。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号