我试图找出具有〜20k条目的javascript Map对象的内存使用情况-键是一个字符串,值是1-2个字符串的数组。
我创建了2个地图:具有17k和22k条目。它们在chrome探查器中具有相同的内存使用情况-怎么办?

为什么仅在将创建对象的对象从合并范围中删除后,Map对象的大小才会有所不同?
另外,我知道哈希映射是如何工作的,但是如果有人知道js Map如何保留命令,请告诉我(也许只是一个链表?)。

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


查看探查器,我发现两个Map占用917kb的空间-怎么可能?
但是从中制造对象的对象(obj)占用786kb和1572kb-这是合理的。

所以我想也许Map拥有一个指向创建它的obj的指针,这就是为什么它们的大小没有差异的原因?然后,我使用了createMap函数,以便obj收集垃圾。只有这样,Map对象才会占用1 9kb和2.3kb的空间,这是可以预期的。

最佳答案

缩放地图非常复杂,如果数据大小<
但是,是否完成以及Map的大小完全取决于实现。


  所以我想也许Map拥有一个指向创建它的obj的指针,这就是为什么它们的大小没有差异的原因?


不,该映射仅保留对obj中值的引用。

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

10-16 19:50