javascript渣滓网络知识点提要(二)

标记消灭

Javascript中最经常运用的渣滓网络体式格局是标记消灭(mark-and-sweep)。当变量进入环境(比方,在函数中声明一个变量)时,就将这个变量标记为“进入环境”,永久不能开释进入环境的变量所占用的内存,由于只需实行流进入响应的环境,就可能会用到他们。而当变量脱离环境时,则将其标记为“脱离环境”。

能够运用任何体式格局来标记变量。比方,能够经由过程翻转某个特别的位来纪录一个变量什么时刻进入环境,或许运用一个“进入环境的”变量列表及一个“脱离环境的”变量列表来跟踪哪一个变量发生了变化。说到底,怎样标记变量实在并不主要,关键在于采用什么战略。

渣滓网络器在运转的时刻会给存储在内存中的一切变量都加上标记(固然,能够运用任何标记体式格局)。然后,他会在去掉环境中的变量以及被环境中的变量援用的变量的标记。而在此之后仍带有标记的变量将被视为预备删除的变量,原因是环境中的变量已无法访问到这些变量了。末了,渣滓网络器完成内存消灭事情,烧毁那些带标记的值并接纳他们所占用的内存空间。

到2008年为止,IE、Firefox、Opera、Chrome和Safari的JavaScript完成运用的都是标记消灭式的渣滓网络战略(或相似的战略),只不过渣滓网络的时候距离互有差别。

    原文作者:两仪
    原文地址: https://segmentfault.com/a/1190000000700701
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞