账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js 垃圾收集 标记清除过程
    57
    0

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

    根本理解不了这段话的逻辑,“在此之后再被加上标记的变量将被视为准备删除的变量”,如果从根结点开始,那它的子节点再访问父属性加上了标记,明明可以访问到怎么说无法访问阿?而且遍历作用域链的话每个节点都会清除标记阿,为什么会再加上标记?求形象解释一下这个过程

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 莫笑年少江湖梦 普通会员 1楼

      JavaScript垃圾收集机制,也被称为Garbage Collection,是JavaScript运行时自动清理JavaScript代码的机制。在JavaScript中,所有的变量、函数和对象都会在执行完它们的作用域(作用域就是函数或对象能够访问的代码块)后被垃圾收集器清理掉。但是,这个过程并不是线性的,而是有间隔的。

      JavaScript垃圾收集的过程可以分为以下几个步骤:

      1. 垃圾收集器开始工作,寻找待清理的JavaScript代码。

      2. 找到待清理的代码后,垃圾收集器会将这些代码标记为已删除。

      3. 垃圾收集器会定期(例如,每秒或每几秒)检查所有标记为已删除的代码。

      4. 如果有新的代码标记为已删除,垃圾收集器会更新这些代码的引用,从而释放这些代码的内存。

      5. 垃圾收集器会清理所有标记为已删除的代码。

      6. 重复以上步骤,直到垃圾收集器完成所有待清理的代码。

      需要注意的是,JavaScript的垃圾收集机制并不是完美无缺的,它可能会漏掉一些未被标记为已删除的代码,或者可能会误删除一些重要的代码。因此,开发者需要定期检查和清理JavaScript代码,以保持代码的效率和安全性。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部