gpt4 book ai didi

memory-management - 如何在 Go 中分配 16GB 的内存?

转载 作者:IT王子 更新时间:2023-10-29 01:49:08 25 4
gpt4 key购买 nike

我正在使用以下简单的 Go 代码来分配大小为 1024x1024x1024 的 3D 数组:

grid = make([][][]TColor, 1024)
for x = 0; x < 1024; x++ {
grid[x] = make([][]TColor, 1024)
for y = 0; y < 1024; y++ {
grid[x][y] = make([]TColor, 1024)
}
}

那个 TColor 结构是一个 4 分量的 float64 向量:

type TColor struct { R, G, B, A float64 }

分配进行到一半(x=477 和 y=~600ish)时,最内层的 make() 调用出现 panic ...运行时:内存不足:无法分配 65536 字节 block (17179869184 正在使用中)

这适用于较低的网格分辨率,即 256³、128³ 等。现在由于结构的大小为 4x4 字节,因此整个网格应该正好需要 16 GB 的内存。我的机器(openSuse 12.1 64 位)有 32 GB 的可寻址物理(即非虚拟)内存。为什么Go(weekly.2012-02-22)分配不到一半?

最佳答案

该结构有 4x8 字节,而不是 4x4。

关于memory-management - 如何在 Go 中分配 16GB 的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050888/

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