对于js种的任意长度字符串,对象,数组是没有固定大小的,只有在分配存储时,解释器就会分配内存来存储这些数据。当js的解释器消耗完系统所有可用内存时,就会造成系统崩溃。因此js有着自己的一套垃圾回收机制。(全局变量不会被回收)

常用有两种方法:标记清除和引用计数

标记清楚

当对象进入执行环境时,垃圾回收就会将其标记为,当变量离开会标记为,然后,它会去掉环境中的变量以及被环境中的变量引用的变量的标记。而在此之后再被加上标记的变量将被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了。最后,垃圾收集器完成内存清除工作,销毁那些带标记的值并回收它们所占用的内存空间。

引用计数

另一种不太常见的垃圾收集策略叫做引用计数(reference counting)。引用计数的含义是跟踪记录每个值被引用的次数。

当声明了一个变量并将一个引用类型赋值给该变量时,则这个值的引用次数就是为1。如果同一个值又被赋值给另一个值,就继续+1,而当变量被复制其他值时,就-1,当这个值的引用次数变成 0时,则说明没有办法再访问这个值了,因而就可以将其占用的内存空间回收回来。这样,当垃圾收集器下次再运行时,它就会释放那 些引用次数为零的值所占用的内存。

但是引用计数存在如果相互引用大量的存在会导致大量的内存泄漏;同时如果出现循环引用问题也会导致内存泄漏的问题。

最新文章

  1. tyvj1113 魔族密码
  2. android 键盘遮挡 父布局上滚解决
  3. 关于JS
  4. 中控考勤仪IFace302多线程操作时无法订阅事件
  5. git 教程(5)--工作区和暂存区
  6. ural 1144. The Emperor's Riddle
  7. C# 文件和文件夹操作
  8. Android View中的控件和监听方法...
  9. 夺命雷公狗---node.js---10之POST的接收
  10. PHP中Redis替代文件存储Session语句
  11. javascript事件和事件处理
  12. Day3 Pyhon的六大数据类型
  13. Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)
  14. CNN中的卷积操作的参数数计算
  15. Beta冲刺 第六天
  16. Rpc框架dubbo-client(v2.6.3) 源码阅读(二)
  17. 使用Struts,实现简单的登录
  18. Shell 常用的命令
  19. Python 爬虫实例(12)—— python selenium 爬虫
  20. FDR错误发现率-P值校正学习[转载]

热门文章

  1. jmeterGUI&非GUI模式之如何减负性能调优
  2. iOS开发之将GIF存储本地相册
  3. DP4056软硬兼容TP4056,低成本
  4. 遍历operation
  5. Power shell 读取电量,改变屏幕亮度
  6. Maven简答题
  7. vscode1.50配置python虚拟环境
  8. Task :app:lintVitalRelease FAILED
  9. 2023-03-01 fatal: unable to access 'https://github.com/top-think/think/': OpenSSL SSL_read: Connection was reset, errno 10054
  10. SQLSERVER自动备份数据库