【发布时间】:2019-07-30 09:49:32
【问题描述】:
我正在尝试找出具有约 20k 个条目的 javascript Map 对象的内存使用情况——键是一个字符串,值是一个由 1-2 个字符串组成的数组。 我创建了 2 个地图:具有 17k 和 22k 条目。它们在 chrome profiler 中的内存使用情况相同 - 如何?
为什么只有在创建它们的对象从作用域中删除之后,Map 对象的大小才会有所不同? 另外,我知道 hashmaps 是如何工作的,但是如果有人知道 js Map 如何保持订单,请告诉我(也许只是一个链接列表?)。
function createMap(){
var obj = JSON.parse(bigStringRepresentingTheJSON);
return new Map(Object.entries(obj));
}
查看分析器,我发现两个地图都占用了 917kb - 这怎么可能? 但是制作它们的对象(obj)需要 786kb 和 1 572kb - 这是合理的。
所以我想也许 Map 拥有一个指向创建它的 obj 的指针,这就是为什么它们的大小没有区别?然后,我使用 createMap 函数让 obj 得到垃圾收集。只有这样,Map 对象才会占用 1 个 9kb 和 2.3kb,这是意料之中的。
【问题讨论】:
标签: javascript dictionary object memory