美文网首页
内存管理:垃圾回收机制

内存管理:垃圾回收机制

作者: 林键燃 | 来源:发表于2019-04-16 10:28 被阅读0次

    JavaScript 的内存分配

    在使用值之前我们需要为其分配内存,使用的过程,实际上是对分配内存进行读取和写入的操作。

    什么是垃圾

    但一个值我们不会再使用时,此时它占用的内存应该得到释放

    我们的垃圾回收机制

    JavaScript 具有垃圾回收机制(GC: Garbage Collecation)它会定期(周期性)的找出不再继续使用的值,然后释放其内存。

    两种实现方式

    1. 标记清除
    2. 引用计数

    标记清除

    • 遍历所有可访问的对象
    • 回收已不可访问的对象

    JavaScript 中最常用的垃圾回收方式就是标记清除。当变量进入环境时,将其标记为“进入环境”,例如,在函数中声明一个变量。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,就可能会用到它们。而当变量离开环境时,则将其标记为“离开环境”。

    引用计数

    最简单的垃圾收集算法。此算法把“对象是否不再需要”简化定义为“对象有没有其它对象引用它”。如果没有引用指向该对象(零引用),对象将被垃圾回收机制回收。

    缺点:循环引用时,即是该部分内存将被占用,无法得到释放。

    内存管理

    GC 的缺陷

    GC 时,会停止相应其它操作,这是为了安全考虑。而 JavaScript 的 GC 在 100ms 甚至以上,对一般的应用还好,但对于 JS 游戏,动画连贯性要求比较高的应用,却是致命的。

    相关文章

      网友评论

          本文标题:内存管理:垃圾回收机制

          本文链接:https://www.haomeiwen.com/subject/xhpvwqtx.html