位置: 编程技术 - 正文

Javascript 垃圾收集机制介绍理解(js中的垃圾回收机制有哪些方法)

编辑:rootadmin

经常使用 Javascript 的人会琢磨其垃圾收集机制,Javascript 并不像 C,C++ 那样需要开发者手动去清除垃圾,在编写 Javascript 程序是,开发者无需关心内存使用问题,所需内存分配以及无用内存(垃圾)的回收完全实现了自动管理。究其根源,主要是程序收集那些不再使用的变量,并且释放其占用的内存。因此,垃圾收集机制会按照固定时间间隔,周期性反复的执行这一操作。

举例来说,局部变量只存在于函数内部,程序会为局部变量在栈内存或堆内存中分配对应的存储空间,当函数运行结束,局部变量所占用的内存就没有存在的必要了,这时程序会释放局部变量所占用的内存供其他变量使用。这是程序最简单释放内存的方法,但是很多时候,程序中变量会一直被使用,此时垃圾收集机制必须跟踪变量并且判断其是否被使用,是否可以释放其内存空间。垃圾收集机制主要判断变量释放内存空间的方法有两个:其一是标记清除法,其二是引用计数法。标记法,每个变量都有其运行环境,变量创建后会在某种环境中运行,比如创建一个局部变量,局部变量会运行在函数体内。当函数运行时,会标记局部变量为“进入环境”,当函数体运行结束后,意味着变量脱离了其运行环境,此时则将变量标记为“离开环境”。对于“离开环境”的变量,垃圾收集机制会进行相应记录,并且在下一个回收周期时将其释放。引用计数法,跟踪记录每个值的被引用次数。声明一个变量并将一个引用类型值赋给该变量时,这个值得引用次数就是 1。如果同一个值又被赋给另外一个变量,则该值的引用次数加 1。相反,如果包含对这个值的引用的变量又取得另外一个值,这个值得引用次数减 1。当这个值得引用次数为 0 时,则说明没有办法再访问到此值,因此就可以将其占用的内存空间回收。当垃圾收集器在下一个周期运行时,会释放引用次数为零的值所占用的内存空间。(原文解释参考:Javascript 高级程序设计 - 第二版)举个例子来说:此函数运行退出后,object1 的计数器读数为 1,object2 的计数器度数为 1。所以两个变量都不会被销毁。如果大量的这样的程序存在于函数体内,就会导致大量的内存被浪费而无法回收,从而导致内存的泄露。上述问题解决方法,手动释放 object1 object2 所占用的内存。即: 对比上面的例子,举一个正常情况下的例子。通过上例看出,正常情况下,当函数运行结束后,object1 object2的读数均为 0,在下一个垃圾收集周期时,会被回收并且释放其所占用的内存。

推荐整理分享Javascript 垃圾收集机制介绍理解(js中的垃圾回收机制有哪些方法),希望有所帮助,仅作参考,欢迎阅读内容。

Javascript 垃圾收集机制介绍理解(js中的垃圾回收机制有哪些方法)

文章相关热门搜索词:js垃圾回收机制和闭包,javascript 垃圾回收,java 垃圾回收器,js垃圾回收机制和闭包,js垃圾清理,js的垃圾机制,js垃圾收集,js垃圾收集,内容如对您有帮助,希望把文章链接给更多的朋友!

使用js检测浏览器的实现代码 在写跨浏览器的js程序中,检测浏览器是一个很重要的工作。我们不时要为不同的浏览器写分支代码。如下是一种://添加事件工具函数functionaddEvent(el,ty

js函数中onmousedown和onclick的区别和联系探讨 这两个事件很常见。了解这两个事件的区别,但是实际并没有使用到这两个事件的区别去做一些操作。通常使用onclick的时候也可以使用onmousedown,使用on

JavaScript中几个重要的属性(this、constructor、prototype)介绍 thisthis表示当前对象,如果在全局作用范围内使用this,则指代当前页面对象window;如果在函数中使用this,则this指代什么是根据运行时此函数在什么对

标签: js中的垃圾回收机制有哪些方法

本文链接地址:https://www.jiuchutong.com/biancheng/377613.html 转载请保留说明!

上一篇:JavaScript 对任意元素,自定义右键菜单的实现方法(js 对象key)

下一篇:使用js检测浏览器的实现代码(使用js检测浏览器的网站)

  • 进项税抵扣怎么弄
  • 纳税会计的要素有
  • 实收资本利息收入可以资本化
  • 以前年度多计收入多交税怎么处理
  • 美元利息结汇时结汇项目是什么
  • 股权投资收回的账务处理
  • 农产品计算抵扣的税务政策
  • 实收资本资本公积盈余公积均属于投资者投入企业的资本
  • 补交以前年度城建税和滞纳金怎么做账
  • 财务费用利息收入借方为负数是什么意思
  • 房地产 结转
  • 银行汇票怎么填写
  • 出口抵减内销产品应纳税额年终结转
  • 注资的设备出售怎么处理
  • 收发差错率
  • 停工损失会计科目
  • 年终奖可以分几次发吗?
  • 供应商不给货款怎么办
  • 房租费简易征收税率
  • 税务登记五证合一是哪五证
  • 应交增值税进项税额借贷方向
  • 矿产资源补偿费征收管理规定
  • 补发工资申请书格式范本
  • 收到的税费返还减少的原因
  • 税前可以扣除的业务招待费怎么算
  • 预收账款贷方负数表示什么
  • 危废处置怎么收费
  • win11怎么设置最佳能效模式
  • 应收账款无法收回确认为坏账会计分录
  • 研发费用的归集范围
  • 认证超时什么意思
  • 新公司开办费用包括哪些
  • windows11 怎么更新
  • 鸿蒙系统怎么关闭负一屏
  • 如果工地老板拖欠工资怎么办
  • 行政单位跨年度收到发票,补付尾款会计分录
  • 印花税怎么交款
  • 什么叫做材料成型工艺
  • 新会计准则计入管理费用的税费
  • 布列塔尼岛屿
  • php 遍历字符串
  • ps换脸后怎样修理痕迹
  • 微信公众号的推送
  • 帝国cms调用api接口
  • 内帐税金会计分录
  • 怎么查电子发票真伪
  • 什么时候工程物资什么时候在建工程
  • 基本户和零余额可以是一个账号么
  • 股权变更后税务登记
  • 清算时存货是否要交税
  • 在创业板上市公司首次公开发行股票的条件
  • 资金占用费怎么写
  • 营改增后计算土地增值税收入公式
  • 过路费发票可以抵扣进项税吗
  • 自建不动产领用原材料增值税进项
  • 企业购置生产要素所引起的本钱炜
  • 固定资产的印花税费计入什么科目里
  • 所得税汇算清缴需要调增的项目
  • 分公司从业人数填越少越好吗
  • 税务代扣社保怎么办理?
  • sql以级联的方式删除表
  • bboy.exe进程是病毒吗 bboy进程安全吗
  • win8怎么把开始调出来
  • linux bash sh
  • centos安装zsh
  • linuxat命令的用法
  • python3 栈
  • 如何提取api
  • nodejs 路由
  • linux监控网络请求
  • 3种不同的播种方法
  • android设置移动网络灰色是什么原因
  • Unity Enemy behaviour
  • js闭包作用问题解决应用
  • 纸质发票怎么查电子发票
  • 江西省国家税务局发票查询
  • 税务局工作业绩
  • 企业年检里的纳税是什么
  • 重庆投诉平台电话
  • 广西定额发票查询入口官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设