gpt4 book ai didi

javascript - WeakMap 能让我避免父/子关系的内存泄漏吗?

转载 作者:行者123 更新时间:2023-11-28 18:36:10 25 4
gpt4 key购买 nike

我的父/子关系如下所示。

parent.children = [child];
child.parent = parent;
  1. 当删除对 parentchild 的所有其他引用时,这是否会导致内存泄漏?只有剩下的引用才会被彼此引用。

  2. 如果循环引用会导致内存泄漏,WeakMap会救我吗?

使用WeakMap

var parentMap = new WeakMap();
parent.children = [child];
parentMap.set(child, parent);

我想不会,因为 parentMap 引用了 parent,而 parent 引用了 child 。仍然存在循环引用。

最佳答案

没有。如果您删除对 parentchild 的所有其他引用,它们将被垃圾收集。所有现代浏览器都使用 mark-and-sweep循环不成问题的垃圾收集算法。您不需要使用 WeakMap(无论如何它不会帮助您)。

但是,显然,如果对 parentchild 的引用仍然存在于某处,那么它们都不会消失。

关于javascript - WeakMap 能让我避免父/子关系的内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37040651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com