谈一下自己对js 垃圾回收的看法和理解
今天在网上看到一篇关于js垃圾回收的贴子 觉得说的比较混乱 于是又去浏览了大量的关于js的垃圾回收 在这里写下我个人对垃圾回收的理解:
将程序比作一株花 垃圾就是脱离了花这个主体的,掉落的花瓣啊,叶子啊什么的就是垃圾 。 花有什么?根茎叶,其中茎叶都是在根的基础上发展的 于是乎带入到js里:
js里的全局变量,本地函数等这些 是程序最基础的 将其称为根

a全局变量 看做根 显然数组【1,2,3】存在过 但是被【4,5,6】替代了 这样看:数组【1,2,3】曾经是根的生长细胞 但是他坏死了 被【4,5,6】替代了 从a这个跟脱离了
于是乎 数组【1,2,3】就成了垃圾 简而言之 和全局变量这些跟元素挂钩的就是有用的,而曾经挂过勾现在没挂钩的那就是垃圾了
垃圾回收垃圾回收 什么是垃圾我们清楚了,再谈谈什么是回收
假若花是一株很值钱的花 ,生长在一家富贵家庭,家里请了保姆,当花瓣掉落了,叶子掉落了,为了确保家里的美观整洁 ,保姆得每天清理 将掉落的‘’垃圾‘’打扫掉
js也一样 为了确保程序的效率 会定期对程序进行清除 保姆能够一眼看见掉落的垃圾 js怎么看呢?
从根开始! 顺着根一步步向上走 有联系的添加一个标记 在将整个程序检查完后将没标记的清理 这就是 标记-清除法(不一定是整个程序检查完统一清理 这里纯属个人推测)。
这里也可以将其看成围棋,你是黑子,假若下一回合白子能无限落子,你能存活下来的棋子就是有用的,被吃掉的就是垃圾。
本文纯属个人理解 希望能对大家有所帮助
若有不恰当之处 望告知

浙公网安备 33010602011771号