gpt4 book ai didi

javascript - 在 V8 中,为什么预分配数组消耗更少的内存?

转载 作者:行者123 更新时间:2023-11-28 18:06:48 24 4
gpt4 key购买 nike

考虑以下两种选择:

  const mb_before = process.memoryUsage().heapUsed / 1024 / 1024;
const n = 15849;
const o = 115;
const entries = [];
for (var i = 0; i < n; i++) {
const subarr = [];
for (var j = 0; j < o; j++) {
subarr.push(Math.random());
}
entries.push(subarr);
}
const mb_after = process.memoryUsage().heapUsed / 1024 / 1024;
console.log('arr using ' + (mb_after - mb_before) + ' megabyte');
// arr using 15.110992431640625 megabyte

  const mb_before = process.memoryUsage().heapUsed / 1024 / 1024;
const n = 15849;
const o = 115;
const entries = new Array(n);
for (var i = 0; i < n; i++) {
const subarr = new Array(o);
for (var j = 0; j < o; j++) {
subarr[j] = Math.random();
}
entries[i] = subarr;
}
const mb_after = process.memoryUsage().heapUsed / 1024 / 1024;
console.log('arr using ' + (mb_after - mb_before) + ' megabyte');
// arr using 12.118911743164062 megabyte

根据我的理解,两个数组的大小应该相同,只是它们的实例化方式不同。如何解释所产生的内存使用量始终不同?

最佳答案

我相信这与数组内存的分配方式有关。当您实例化一个数组并为其指定特定大小(如第二个示例中所示)时,它将分配该内存。

当你增长数组时,它会分配少量的额外空间来处理增长,然后当你增长数组时,额外的内存分配会变得更大。这会在第一个示例中产生额外的可用空间。

关于javascript - 在 V8 中,为什么预分配数组消耗更少的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42403625/

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