资讯专栏INFORMATION COLUMN

javascript垃圾收集知识点概要(二)

TesterHome / 2837人阅读

摘要:标记清除中最常用的垃圾收集方式是标记清除。最后,垃圾收集器完成内存清除工作,销毁那些带标记的值并回收他们所占用的内存空间。到年为止,和的实现使用的都是标记清除式的垃圾收集策略或类似的策略,只不过垃圾收集的时间间隔互有不同。

标记清除
  

Javascript中最常用的垃圾收集方式是标记清除(mark-and-sweep)。当变量进入环境(例如,在函数中声明一个变量)时,就将这个变量标记为“进入环境”,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,就可能会用到他们。而当变量离开环境时,则将其标记为“离开环境”。

  

可以使用任何方式来标记变量。比如,可以通过翻转某个特殊的位来记录一个变量何时进入环境,或者使用一个“进入环境的”变量列表及一个“离开环境的”变量列表来跟踪哪个变量发生了变化。说到底,如何标记变量其实并不重要,关键在于采取什么策略。

垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记(当然,可以使用任何标记方式)。然后,他会在去掉环境中的变量以及被环境中的变量引用的变量的标记。而在此之后仍带有标记的变量将被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了。最后,垃圾收集器完成内存清除工作,销毁那些带标记的值并回收他们所占用的内存空间。

到2008年为止,IE、Firefox、Opera、Chrome和Safari的JavaScript实现使用的都是标记清除式的垃圾收集策略(或类似的策略),只不过垃圾收集的时间间隔互有不同。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85326.html

相关文章

  • javascript垃圾收集识点概要(一)

    摘要:待分析下面我们来分析一下函数中局部变量的正常声明周期。局部变量只在函数执行的过程中存在。此时,局部变量就没有存在的必要了,因此可以释放他们的内存以供将来使用。 以下总结内容来自《JavaScript高级程序》(第三版) 页码:78 JavaScript具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。而在C和C++之类的语言中,开发人员的一项基本任务就...

    Cheriselalala 评论0 收藏0
  • javascript垃圾收集识点概要(三)

    摘要:可是,引用计数导致的麻烦并未就此终结。其中,变量有一个名为的属性指向对象而变量也有一个属性名为回指。当垃圾收集器下次运行时,就会删除这些值并回收它们所占用的内存。 引用计数 另一种不太常见的垃圾收集策略叫做引用计数(reference counting)。引用计数的含义是跟踪记录每个值被引用的次数。当声明了一个变量并将一个应用类型值赋给该变量时,则这个值的应用次数就是1。如果同...

    jayce 评论0 收藏0
  • Javascript难点知识运用---递归,闭包,柯里化等

    摘要:作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端,始终都是当前执行的代码所在环境的变量对象。对语句来说,会将指定的对象添加到作用域链中。 前言 ps: 2018/05/13 经指正之后发现惰性加载函数细节有问题,已改正在这里也补充一下,这些都是根据自己理解写的例子,不一定说的都对,有些只能查看不能运行的要谨慎,因为我可能只是将方法思路写出来,没有实际跑...

    hqman 评论0 收藏0
  • JavaScript如何工作:内存管理+如何处理4个常见的内存泄漏

    摘要:本系列的第一篇文章简单介绍了引擎运行时间和堆栈的调用。编译器将插入与操作系统交互的代码,并申请存储变量所需的堆栈字节数。当函数调用其他函数时,每个函数在调用堆栈时获得自己的块。因此,它不能为堆栈上的变量分配空间。 本系列的第一篇文章简单介绍了引擎、运行时间和堆栈的调用。第二篇文章研究了谷歌V8 JavaScript引擎的内部机制,并介绍了一些编写JavaScript代码的技巧。 在这第...

    anRui 评论0 收藏0
  • 【进阶1-4期】JavaScript深入之带你走进内存机制

    摘要:引擎对堆内存中的对象进行分代管理新生代存活周期较短的对象,如临时变量字符串等。内存泄漏对于持续运行的服务进程,必须及时释放不再用到的内存。 (关注福利,关注本公众号回复[资料]领取优质前端视频,包括Vue、React、Node源码和实战、面试指导) 本周正式开始前端进阶的第一期,本周的主题是调用堆栈,今天是第4天。 本计划一共28期,每期重点攻克一个面试重难点,如果你还不了解本进阶计划...

    不知名网友 评论0 收藏0

发表评论

0条评论

TesterHome

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<