JavaScript垃圾回收机制的了解
2024-09-08 15:55:57
对于js种的任意长度字符串,对象,数组是没有固定大小的,只有在分配存储时,解释器就会分配内存来存储这些数据。当js的解释器消耗完系统所有可用内存时,就会造成系统崩溃。因此js有着自己的一套垃圾回收机制。(全局变量不会被回收)
常用有两种方法:标记清除和引用计数
标记清楚
当对象进入执行环境时,垃圾回收就会将其标记为,当变量离开会标记为,然后,它会去掉环境中的变量以及被环境中的变量引用的变量的标记。而在此之后再被加上标记的变量将被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了。最后,垃圾收集器完成内存清除工作,销毁那些带标记的值并回收它们所占用的内存空间。
引用计数
另一种不太常见的垃圾收集策略叫做引用计数(reference counting)。引用计数的含义是跟踪记录每个值被引用的次数。
当声明了一个变量并将一个引用类型赋值给该变量时,则这个值的引用次数就是为1。如果同一个值又被赋值给另一个值,就继续+1,而当变量被复制其他值时,就-1,当这个值的引用次数变成 0时,则说明没有办法再访问这个值了,因而就可以将其占用的内存空间回收回来。这样,当垃圾收集器下次再运行时,它就会释放那 些引用次数为零的值所占用的内存。
但是引用计数存在如果相互引用大量的存在会导致大量的内存泄漏;同时如果出现循环引用问题也会导致内存泄漏的问题。
最新文章
- tyvj1113 魔族密码
- android 键盘遮挡 父布局上滚解决
- 关于JS
- 中控考勤仪IFace302多线程操作时无法订阅事件
- git 教程(5)--工作区和暂存区
- ural 1144. The Emperor's Riddle
- C# 文件和文件夹操作
- Android View中的控件和监听方法...
- 夺命雷公狗---node.js---10之POST的接收
- PHP中Redis替代文件存储Session语句
- javascript事件和事件处理
- Day3 Pyhon的六大数据类型
- Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)
- CNN中的卷积操作的参数数计算
- Beta冲刺 第六天
- Rpc框架dubbo-client(v2.6.3) 源码阅读(二)
- 使用Struts,实现简单的登录
- Shell 常用的命令
- Python 爬虫实例(12)—— python selenium 爬虫
- FDR错误发现率-P值校正学习[转载]
热门文章
- jmeterGUI&;非GUI模式之如何减负性能调优
- iOS开发之将GIF存储本地相册
- DP4056软硬兼容TP4056,低成本
- 遍历operation
- Power shell 读取电量,改变屏幕亮度
- Maven简答题
- vscode1.50配置python虚拟环境
- Task :app:lintVitalRelease FAILED
- 2023-03-01 fatal: unable to access 'https://github.com/top-think/think/': OpenSSL SSL_read: Connection was reset, errno 10054
- SQLSERVER自动备份数据库