【发布时间】:2016-11-09 17:06:50
【问题描述】:
有没有人很好地理解/解释如何在带有 Chrome(V8) 的 Javascript 中确定字符串的堆大小?
我在堆转储中看到的一些示例:
1) 具有不同 @ 对象 ID 的相同 2 个字符串(即“dt”)的多个副本都指定为 OneByteStrings。 heapdump 说每个副本都有一个 32 字节的浅表和保留大小。目前尚不清楚一个两字节字符串如何保留 32 的大小以及为什么这些字符串似乎没有被保留。
2) 长对象路径字符串,长度为 78 个字符。所有字符都是 utf8 中的一个字节。它被归类为内部化字符串。它具有 184 字节的保留大小。即使使用 2 字节字符编码,它仍然不会占剩余的 28 字节。为什么这些路径字符串占用这么多空间?我可以想象另外 4 个字节(可能是 8 个)用于地址,另外 4 个用于存储字符串长度,但即使使用 2 字节字符编码,仍然会留下 16 个字节。
【问题讨论】:
标签: javascript string v8