资讯专栏INFORMATION COLUMN

浅谈下垃圾回收机制(1)

dackel / 2488人阅读

摘要:前言垃圾回收机制在工作中很少碰到,看到阮一峰的书中有写,记录下。垃圾回收机制与垃圾回收机制只考虑对象的强引用垃圾回收机制依赖引用计数,当计数为,则自动回收该对象占用的内存。里面的引用,都不计入垃圾回收机制,所以就不存在这个问题。

前言:
垃圾回收机制在工作中很少碰到,看到阮一峰的书中有写,记录下。

垃圾回收机制与WeakSet
(1)垃圾回收机制只考虑对象的强引用
(2)垃圾回收机制依赖「引用计数」,当计数为0,则GC自动回收该对象占用的内存。
(3)当忘记取消引用(a=null),就会导致内存无法释放,从而引发内存泄漏。

WeakSet中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于WeakSet之中。

这是因为垃圾回收机制依赖引用计数,如果一个值的引用次数不为0,垃圾回收机制就不会释放这块内存。结束使用该值之后,有时会忘记取消引用,导致内存无法释放,进而可能会引发内存泄漏。WeakSet里面的引用,都不计入垃圾回收机制,所以就不存在这个问题。因此,WeakSet适合临时存放一组对象,以及存放跟对象绑定的信息。
只要这些对象在外部消失,它在WeakSet里面的引用就会自动消失。

由于上面这个特点,WeakSet的成员是不适合引用的,因为它会随时消失。另外,由于WeakSet内部有多少个成员,取决于垃圾回收机制有没有运行,运行前后很可能成员个数是不一样的,而垃圾回收机制何时运行是不可预测的,因此ES6规定WeakSet不可遍历。

参考:http://es6.ruanyifeng.com/#docs/set-map

(完)

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

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

相关文章

  • 【转】浅谈PHP5中垃圾回收算法(Garbage Collection)的演化

    摘要:所有这些类型,在内部统一用一个叫做的结构表示,在源代码中这个结构名称为。的具体定义在源代码的文件中,下面是相关代码的摘录。 【转】浅谈PHP5中垃圾回收算法(Garbage Collection)的演化 前言 PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放(使用C编写PHP或Zend扩展除外),这就意味着PHP本身实现了垃圾回收机制(Garbage C...

    AdolphLWQ 评论0 收藏0
  • 浅谈V8引擎中的垃圾回收机制

    摘要:新生代的对象为存活时间较短的对象,老生代中的对象为存活时间较长或常驻内存的对象。分别对新生代和老生代使用不同的垃圾回收算法来提升垃圾回收的效率。如果指向老生代我们就不必考虑它了。 这篇文章的所有内容均来自 朴灵的《深入浅出Node.js》及A tour of V8:Garbage Collection,后者还有中文翻译版V8 之旅: 垃圾回收器,我在这里只是做了个记录和结合 垃圾回收...

    happen 评论0 收藏0
  • php内核阅读(2)--浅谈 gc回收机制

    摘要:垃圾回收所谓垃圾就是指通过循环引用自己引用自己,目前只在类型中有出现的形式而导致永远不为。当出现垃圾之后,的引擎有对应的垃圾回收机制。触发这个机制的时机是每次出现减少时候。 自嘲)。。。。。2333,我觉得这是因为在php语言层面就帮我们解决了内存回收的问题,但这让我在和java大牛们吹牛逼的时候,听到什么内存泄露。。。。(纳尼,我tmd怎么从来没遇见过)一脸懵逼。 本人小菜,如果下面...

    wemallshop 评论0 收藏0
  • React源码解析之React.createElement()和ReactElement()

    摘要:一语法转换到语法从转换到会用到,所以先熟悉下到的转换。对于库作者而言,冻结对象可防止有人修改库的核心对象。 showImg(https://segmentfault.com/img/remote/1460000019757204); 一、JSX语法转换到Js语法从 JSX 转换到 JS 会用到React.createElement(),所以先熟悉下 JSX 到 JS 的转换。 这边是 ...

    BlackMass 评论0 收藏0
  • 浅谈js内存与闭包

    摘要:将他们放在堆中是为了不影响栈的效率。接着是临时空间函数执行的时候,会临时开辟一块内存空间,这块内存空间长得和外面这个一样,也有自己的栈堆,当函数运行完就销毁。中的内存第一个部分还是和上面的一样,有栈堆运行时环境,另外还有一个缓冲区存放。 0.前言 主要结合了内存的概念讲了js的一些的很简单、但是又不小心就犯错的地方。结论:js执行顺序,先定义,后执行,从上到下,就近原则。闭包可以让外部...

    dailybird 评论0 收藏0

发表评论

0条评论

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