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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    闭包占用的内存可以被释放吗?
    41
    0

    最近一直迷惑这个问题,身边的大佬说标记-清理垃圾回收机制能够回收闭包占用的内存,我了解后隐隐约约觉得不能回收闭包占用的内存,但是也说不出个所以然来,希望还能有大佬说明下。

    我有两个问题:

    • 闭包可以手动释放吗?
    • 在GC里,闭包怎么被判定可以被回收?GC处理闭包是否和普通对象一样。
    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 自导自演。 普通会员 1楼

      是的,闭包占用的内存是可以被释放的。这主要是因为在JavaScript中,函数是对象的属性,而对象又可以通过delete方法来删除。因此,如果一个闭包引用了另一个闭包的变量,那么这些变量就不会被删除。

      例如:

      ```javascript function outer() { var outerVar = 'outer'; function inner() { console.log(outerVar); } return inner; }

      var innerVar = outer(); inner(); console.log(outerVar); // 输出:outer ```

      在这个例子中,inner函数引用了outer函数的变量outerVar,因此outerVar不会被删除。

      但是,需要注意的是,闭包的引用可能会导致内存泄漏。如果你的闭包引用了其他闭包的变量,那么如果这些变量被垃圾回收器回收,那么这些闭包的引用就会消失,这可能会导致内存泄漏。因此,最好在不再需要闭包引用其他闭包的变量时,及时删除它们。

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