位置: 编程技术 - 正文

javascript的内存管理详解(javascript内存管理)

编辑:rootadmin
介绍   低层次的语言,如C,具有低级别的内存管理命令,如:malloc()和free(),需要开发者手工释放内存。然而像javascript这样的高级语言情况则不同,对象(objects, strings 等)创建的时候分配内存,当他们不在使用的时候内存会被自动回收,这个自动回收的过程被称为垃圾回收。因为垃圾回收的存在,让javascript等高级语言开发者产生了一个错误的认识,以为可以不用关心内存管理。   内存生命周期   不管什么样的编程语言,内存的生命周期基本上是一致的。 1.分配你需要的内存 2.使用他进行读写操作 3.当内存不需要的时候,释放资源   步骤1和步骤2对于所有语言都一样,能明显觉察到。至于步骤3,低级别语言需要开发者显式执行。而对于像javascript这样的高级语言,这部分操作是交给解析器完成的,所以你不会觉察到。   javascript中的分配操作   值的初始化   在为变量赋值的时候,javascript会完成内存的分配工作。 通过函数调用完成分配   一些函数当执行完毕之后,同样存在对象分配的情况发生。 一些方法会分配新值或者对象。 对值的使用   对值的使用,其实也就是对分配后的内存执行读写操作。这些操作包括:对变量或者对象的属性进行读写操作,或者向函数传递参数。   当不再需要的时候,释放内存   绝大多数内存管理的问题都发生在这个阶段。最难做的事情是,如何判定分配的内存不再需要。这往往需要开发者做出判定,程序在什么时候不再需要内存,并释放他所占资源。   高级语言的解析器中嵌入了一个叫做“垃圾收集器”的程序,他的工作是用来跟踪内存的分配和使用,判定内存是否被需要,在不再需要的时候执行资源释放操作。他只能获得一个近似值,因为判断一个内存是否被需要,这是个不确定的问题(不能通过一种算法解决)。   垃圾回收   正如上文所述,我们无法准确的做到自动判定“内存不再需要”。所以,垃圾回收对该问题的解决方案有局限性。本节将解释必要的概念,了解主要的垃圾收集算法和它们的局限性。   引用   垃圾回收中一个主要的概念是引用。在内存管理中,当一个对象无论是显式的还是隐式的使用了另外一个对象,我们就说他引用了另外一个对象。例如,javascript对象存在一个隐式的指向原型的引用,还有显式指向他的属性值的引用。   在这里,对象的概念超出了javascript传统意义上对象的概念,他还包括函数作用域和全局作用域。   使用引用计数算法的垃圾回收   下面要介绍的是一种最理想化的算法,引入了 “对象不再需要” 和 “没有其他对象引用该对象” 的概念。当该对象的引用指针变为0的时候,就认为他可以被回收。 例子: 限制:循环   该算法有其局限性,当一个对象引用另外一个对象,当形成循环引用时,即时他们不再被需要了,垃圾收集器也不会回收他们。 现实中的例子   ie6、7中,在dom对象上使用引用计数的算法,这里会存在内存泄露的问题。 标记 - 清除算法   他引入了“对象不再需要”和“对象不可访问(对象不可达)”的概念。该算法假设有一系列的根对象(javascript中的根对象就是全局对象),每隔一段时间,垃圾收集器就会从根对象开始,遍历所以他引用的对象,然后再遍历引用对象引用的对象,以此类推。使用这种方式,垃圾收集器可以获得所有可访问的对象,回收那些不可访问的对象。   这种算法比之前的算法好些,0引用的对象会被设置为不可访问对象,同时他也避免了循环引用造成的困恼。   截止年,大多数现代浏览器使用的是这种“标记-清除算法”的垃圾回收器。JavaScript垃圾收集领域(代/增量/并发/并行的垃圾收集),在过去的几年改善了与之相关的算法,但是垃圾收集算法本身(标记-清除算法)和“如何判定一个对象不再需要”并没有得以改善。   周期不再是一个问题   在第一个例子中,函数调用结束之后,这两个对象不会被全局对象引用,也不会被全局对象引用的对象引用。因此,他们会被javascript垃圾回收器标记为不可访问对象。这种事情同样也发生在第二个例子中,当div和事件处理函数被垃圾回收器标记为不可访问,他们就会被释放掉。   限制:对象需要明确的标记为不可访问   这种标记的方法存在局限,但是我们在编程中被没有接触到他,所以我们很少关心垃圾回收相关的内容。

推荐整理分享javascript的内存管理详解(javascript内存管理),希望有所帮助,仅作参考,欢迎阅读内容。

javascript的内存管理详解(javascript内存管理)

文章相关热门搜索词:js函数在内存中的存储方式,js内存地址,js函数在内存中的存储方式,javascript内存机制,javascript内存机制,js内存地址,javascript内存机制,javascript内存管理,内容如对您有帮助,希望把文章链接给更多的朋友!

js setTimeout 常见问题小结 一、setTimeoutthis指向问题setTimeout("this.count()",)中的this指的是window对象.js的setTimeout定义为window.setTimeout=function(vCode,iMilliSeconds[,sLanguage]){//.....代码returnti

IE、FF、Chrome浏览器中的JS差异介绍 因为浏览器公司各自为利益考虑,到目前为止各浏览器的HTML标准或是JS标准都还未统一。在平常的开发中,我们常使用的JS框架基本已经帮我们处理好

JavaScript中json使用自己总结 自己总结json的使用:varjson={"_.JPG":{"name":"小张","height":},"_.JPG":{"name":"小王","height":},"_.JPG":{"name":"貂蝉","height":},"_.JPG":{"name":"

标签: javascript内存管理

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

上一篇:JavaScript中圆括号()和方括号[]的特殊用法疑问解答(js 括号函数)

下一篇:js setTimeout 常见问题小结(js settimeout用法)

  • 税收对国家的影响及地位
  • 利润分配未分配利润是什么科目
  • 股票股利的资金来源
  • 个体工商户怎么变更法人
  • 不动产销售额怎么填
  • 征税和补贴对市场结果的影响
  • 社保公积金计提是本月计提下月
  • 公司注销投资款退回给股东,附言写什么
  • 免税商品进项增值税发票怎么做账
  • 政府补贴什么时候确认收入
  • 公司给员工购买意外险怎么做账
  • 农产品核定扣除增值税进项税额计算表
  • 企业流水账怎么查
  • 企业所得税年报错了怎么更正
  • 购买方丢失未认证发票 怎么办
  • 分公司与总公司承担责任的法律规定
  • 税务局返还的个税手续费税率
  • 发微信验证消息
  • 经营租赁不动产发票备注栏
  • 将汽车奖励给员工财务如何处理?
  • 现金交易的发票可以认证
  • 营业账簿印花税包括什么
  • 核定征收企业所得税的小型微利企业不得享受优惠政策
  • 关于劳务派遣服务外包的案例
  • 公司前三季度实现营业收入59.17亿元
  • 长期投资项目包括哪些
  • 资管公司如何缴纳流转税?
  • 预缴地实现的月销售额未超过
  • 无法取得房地产原值怎么缴纳房产税?
  • 出售交易性金融资产的记账凭证
  • 公司利润为负数 贷款
  • 公司出售车辆
  • 数字权利服务如何打开
  • 红字专用发票是红色的吗
  • 已抵扣的发票怎么撤销
  • 品牌使用费分录
  • php生成二维码
  • win10系统电脑怎么连接wifi
  • 呆账核销的条件有哪些
  • 企业转手员工工龄怎么算
  • 今天端午节?
  • 直线法计提折旧每年都一样吗
  • 确认收入的五个原则
  • 红字发票账务处理
  • 财政贴息会计处理怎么理解
  • 代收代付业务需要开发票吗
  • 建筑企业预缴所得税款税率
  • 普票与专票的区别在哪?它各自的特点?
  • 织梦怎么样
  • 商业汇票贴现时间轴
  • 税金及附加包括哪些科目
  • 购买空调报销单怎么填
  • 短期理财会计处理
  • 会计做账的凭据是什么
  • 当月已付款, 没收到发票怎么做账
  • 无形资产及其他资产包括哪些科目
  • 公司与股东的往来款
  • 企业应付账款的借方余额反映的是
  • 五险一金个人和公司缴费比例
  • 营改增人力资源服务
  • 银行退票业务
  • centos安装NVIDIA驱动
  • windows性能监视器怎么用
  • Windows Server 2008网络安全与终端服务
  • 如何配置samba配置文件
  • linux例子
  • win7电脑老是跳出弹窗广告怎么办
  • 解决登陆xp系统问题
  • 远程调试linux
  • cocos 2d x
  • a10 config backup for aXAPI
  • nodejs实战
  • js实现自定义打印
  • [置顶] [Android Studio 权威教程]最实用的快捷键
  • 冲减多计提的坏账准备
  • 通用申报表怎么填样本
  • 国税地税征管
  • 乾升黄酒好吗值得买吗
  • 浙江摩托车上牌条件
  • 四川 国税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设