据我对原生JavaScript WeakMap的了解,它们弱存储密钥,而强存储它们的值,对吗?
如果是这样,是否在WeakMap中同时使用一个值,一个键和一个值来防止对象被垃圾回收?
const domElement0 = ...;
const domElement1 = ...;
const map = WeakMap([
[ domElement0, domElement1 ],
[ domElement1, domElement0 ]
]);
假设在该代码段中WeakMap始终可用,那么我将假定,如果domElement0
无法访问,则domElement1
不会进行垃圾收集,反之亦然,但是如果它们都变得无法访问并与DOM分离,我是否可以知道它们都将在大多数浏览器中都具有使用GC的资格?
如果是这样,有人可以提供参考说明为什么可行吗?
我认为它们应该变成垃圾。
WeakMap对象的规范具有以下注意事项:
WeakMap和WeakSets旨在提供一种机制,用于在没有WeakMap或WeakSet的情况下以其他方式将状态与对象动态关联,从而不会“泄漏”内存资源,否则该对象将变得不可访问并受实现的资源回收垃圾收集机制。
因此,如果对对象的唯一引用是通过WeakMap条目进行的,而键不能通过从WeakMap外部开始的某些引用链进行访问,则对象将变为垃圾。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句