gpt4 book ai didi

javascript - 考虑到非类型化的 JavaScript 数组不是同质的,它们如何在内存中布局?

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

我对非类型化 JavaScript 数组的性能特征很好奇,因为它们不是同质的,并且想知道内部是如何处理的。

例如,如果我在数组中有一个数字和某个任意对象,它们是否连续存储在内存中?所有原语是否都装箱并且数组只包含指向所有内容的指针?是VM的实现细节吗?

最佳答案

这取决于 JavaScript 引擎的实现。

但一般来说,在 JavaScript 数组中,整数和 float 按值存储,所有其他对象按引用存储。

V8数组类型将为 PACKED_ELEMENTSHOLEY_ELEMENTS(取决于数组的创建/填充方式),并且每个字符串将另外单独存储在堆上。

要进行验证,请在 V8 引擎的调试版本中使用 %DebugPrint 函数(您可以使用 jsvu 工具获得一个函数):

d8> var a = [1, 2, 'aaa']; %DebugPrint(a);
DebugPrint: 000003B13FECFC89: [JSArray]
- elements: 0x03b13fecfc31 <FixedArray[3]> {
0: 1
1: 2
2: 0x00c73b3e0fe1 <String[#3]: aaa>
}

关于javascript - 考虑到非类型化的 JavaScript 数组不是同质的,它们如何在内存中布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55964831/

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