美文网首页程序之路
JavaScript垃圾回收机制的了解

JavaScript垃圾回收机制的了解

作者: 转移到CSDN名字丹丹的小跟班 | 来源:发表于2021-03-18 22:11 被阅读0次

    对于js种的任意长度字符串,对象,数组是没有固定大小的,只有在分配存储时,解释器就会分配内存来存储这些数据。当js的解释器消耗完系统所有可用内存时,就会造成系统崩溃。因此js有着自己的一套垃圾回收机制。(全局变量不会被回收)
    常用有两种方法:标记清除和引用计数

    标记清楚
    当对象进入执行环境时,垃圾回收就会将其标记为\color{#DAA520}{\small进入环境},当变量离开会标记为\color{#DAA520}{\small离开环境},然后,它会去掉环境中的变量以及被环境中的变量引用的变量的标记。而在此之后再被加上标记的变量将被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了。最后,垃圾收集器完成内存清除工作,销毁那些带标记的值并回收它们所占用的内存空间。

    引用计数
    另一种不太常见的垃圾收集策略叫做引用计数(reference counting)。引用计数的含义是跟踪记录每个值被引用的次数。
    当声明了一个变量并将一个引用类型赋值给该变量时,则这个值的引用次数就是为1。如果同一个值又被赋值给另一个值,就继续+1,而当变量被复制其他值时,就-1,当这个值的引用次数变成 0时,则说明没有办法再访问这个值了,因而就可以将其占用的内存空间回收回来。这样,当垃圾收集器下次再运行时,它就会释放那 些引用次数为零的值所占用的内存。

    但是引用计数存在如果相互引用大量的存在会导致大量的内存泄漏;同时如果出现循环引用问题也会导致内存泄漏的问题。

    相关文章

      网友评论

        本文标题:JavaScript垃圾回收机制的了解

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