WeakMap对象内存大小如何计算?含DOM元素关联场景示例
WeakMap关联DOM元素时的内存大小分析
先明确你的场景代码:
let item1 = document.querySelector("#item1"); let item2 = document.querySelector("#item2"); const wMap = new WeakMap(); wMap.set(item1, item2);
这个场景下WeakMap的内存大小要分两部分来看:
WeakMap自身的基础内存开销
不同JavaScript引擎(比如Chrome的V8、Firefox的SpiderMonkey)对WeakMap的底层实现不同,基础结构的内存大概在64-128字节区间,主要用来存储哈希表的元数据、内部管理结构等。键值对的引用开销
WeakMap的键是对DOM元素的弱引用,值是对DOM元素的普通引用,两者本质都是内存地址指针:- 64位系统下,每个指针占8字节,所以一组键值对的开销是16字节;
- 32位系统下,每个指针占4字节,一组键值对开销是8字节。
注意:DOM元素本身的内存不算在WeakMap的内存里,WeakMap只存储指向它们的引用,而且弱引用不会阻止DOM元素被浏览器垃圾回收。
没有通用的精确计算方法,因为不同浏览器的引擎优化、系统位数都会影响最终数值,上面的数值是基于常见引擎的估算结果。
内容的提问来源于stack exchange,提问作者cak3_lover
相关产品推荐
相关产品推荐

