当前位置 博文首页 > 纸飞机博客:垃圾回收(GC)

    纸飞机博客:垃圾回收(GC)

    作者:[db:作者] 时间:2021-09-07 10:10

    GC会周期性运行以释放那些不需要的内存,否则,JavaScript的解释器将会耗尽全部系统内存而导致系统崩溃。

    标记清除法

    这是javascript中最常用的垃圾回收方式。 当变量进入执行环境时,就标记这个变量 为“进入环境”。从逻辑上讲,永远不能 释放进入环境的变量所占用的内存,因为 只要执行流进入相应的环境,就可能会用 到他们。当变量离开环境时,则将其标记 为“离开环境”。

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

    引用计数法

    另一种不太常见的垃圾回收策略是引用计 数。引用计数的含义是跟踪记录每个值被 引用的次数。当声明了一个变量并将一个 引用类型赋值给该变量时,则这个值的引 用次数就是1。相反,如果包含对这个值引 用的变量又取得了另外一个值,则这个值 的引用次数就减1。当这个引用次数变成0 时,则说明没有办法再访问这个值了恩口 而就可以将其所占的内存空间给收回 这样,垃圾收集器下次再运行时,它就会 释放那些引用次数为0的值所占的内存。

    cs
    下一篇:没有了