gpt4 book ai didi

javascript - JS Map from Object.entries 内存使用情况

转载 作者:行者123 更新时间:2023-12-02 23:13:05 25 4
gpt4 key购买 nike

我试图找出具有约 20k 条目的 javascript Map 对象的内存使用情况 - 键是一个字符串,值是一个由 1-2 个字符串组成的数组。我创建了 2 个 map :包含 17k 和 22k 条目。它们在 chrome profiler 中具有相同的内存使用量 - 如何实现?

为什么只有在创建 Map 对象的对象从作用域中删除后,Map 对象的大小才会有所不同?另外,我知道 HashMap 是如何工作的,但是如果有人知道 js Map 如何保持顺序,请告诉我(也许只是一个链接列表?)。

function createMap(){
var obj = JSON.parse(bigStringRepresentingTheJSON);
return new Map(Object.entries(obj));
}

查看分析器,我发现两个 map 都占用 917kb - 这是怎么回事?但制作它们的对象 (obj) 需要 786kb 和 1 572kb - 这是合理的。

所以我想也许 Map 持有一个指向创建它的 obj 的指针,这就是为什么它们的大小没有不同?然后,我使用了 createMap 函数,以便 obj 被垃圾收集。只有这样,Map 对象才需要 1 9kb 和 2.3kb,这是可以预料的。

最佳答案

缩放映射很复杂,如果数据大小 << 映射大小,则 HashMap 会更有效,因为哈希冲突的频率会降低。因此,Map 分配比需要的更多的内容是有道理的,它可能会分配一个固定大小的哈希表,然后根据需要进行缩放。

如果完成了, map 有多大完全取决于实现。

So I thought maybe Map holds a pointer to obj from which it was created, and thats why they don't differ in size?

不,Map 仅保存对 obj 中的值的引用。

关于javascript - JS Map from Object.entries 内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57268853/

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