ES6中Map和WeakMap集合的垃圾回收

6
我正在阅读WeakMap的描述,它说:
在本机WeakMaps中,对键对象的引用被“弱化”,这意味着如果没有对该对象的其他引用,则它们不会阻止垃圾回收。
从中可以理解,WeakMaps用于利用JavaScript的垃圾回收。但我基本上不理解加粗的那行是什么意思。
为什么在普通的Map中,没有引用的对象不会被垃圾回收?这样做有什么优势,我是否需要明确地从普通的Map中删除对象?

这意味着除非这些键具有其他独立的引用,否则gc可以回收它们的内存。 - Hunan Rostomyan
@HunanRostomyan 我理解这个概念的表面含义,但是如果没有一个例子,我感觉我真的无法理解垃圾回收是如何工作的。 - m0meni
1
好的,那有点抽象了。我在下面尝试提供一个小例子。也许这会更有用一些。 - Hunan Rostomyan
4
为什么在普通的Map中,没有被引用的对象不会被垃圾回收?因为Map本身对这个对象有引用。只要存在引用,该对象就不会被垃圾回收。 - Felix Kling
2个回答

2

"为什么在普通的Map中,没有被引用的对象不会被垃圾回收?" 因为Map本身有对该对象的引用。只要有引用存在,对象就不会被垃圾回收。- Felix Kling


1
如果从映射中删除对象,即map.delete(key),那么它是否会被垃圾回收? - Uahnbu Tran

1
在普通的Map中,Map本身是指向对象的引用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接