【发布时间】:2014-02-03 08:29:27
【问题描述】:
编辑:一些有用的回复让我意识到我忘记包含一个关键细节。我也在检查振荡,这意味着我必须存储每一代的信息。
我正在用 JavaScript 重新创建生命游戏,需要一个 3D 数组。据我了解,我必须先声明数组的大小,然后才能开始填充它。这很不幸,因为我不知道这款游戏会持续多少代。如果我将其设置为低,游戏可能会突然停止。如果我将其设置为高,浏览器可能会因填满内存而崩溃。这是我声明 3D 矩阵的代码。
cellMatrix = new Array();
function declareMatrix() {
for (var g = 0; g < maxGenerations; g++) {
cellMatrix[g] = new Array();
for (var x = 0; x < width; x++) {
cellMatrix[g][x] = new Array();
for (var y = 0; y < height; y++) {
cellMatrix[g][x][y] = new Array();
}
}
}
}
主要问题:有没有更节省内存的方法?
没有一个正确答案的奖励问题(抱歉):多少内存使用量太大了?
【问题讨论】:
-
如果您有 16 个单元,则您必须使用 16 个内存位置。您无法优化阵列存储。
-
不,JavaScript 数组是动态的并且会自动增长/收缩。即使在您的示例代码中,您也不会“声明数组大小”。
-
你测量过'maxGeneration'的值吗?
-
maxGenerations 的值是我定义的,在我从这里的答案中了解到我不需要先定义数组的大小之前。我猜是一些认知谬误。
标签: javascript arrays memory memory-management