首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript -处理大型数组时的内存问题

Javascript -处理大型数组时的内存问题
EN

Stack Overflow用户
提问于 2018-10-21 00:23:21
回答 1查看 1.4K关注 0票数 0

我正在开发一个Javascript应用程序,它在表示图像数据的数组上执行大量的每像素操作。当我设置数组时,我从一个空的'[]‘开始,然后用零填充它,有点像这样:

代码语言:javascript
复制
<!DOCTYPE html>
<html>

  <head>

    <script>
      function makeBigArray()
      {
        // Create a data array for a 5000*5000 RGB image
        var imageData = [];
        for (var i = 0, lenI = 5000*5000*3; i < lenI; i++)
        {
            imageData.push(0);
        }
      }
    </script>

  </head>

  <body>

    <button onclick="makeBigArray()">Make Big Array</button>

  </body>

</html>

我很快就注意到,像这样的循环似乎会导致大量的内存命中。当我执行上面的代码时,我得到的内存使用量在2 2GB范围内。

有人能解释一下为什么像这样简单地将元素推入数组就会产生如此高的内存使用率吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-21 00:37:11

在javascript中,每个数字都是一个double,在大多数系统中是8个字节。这意味着您的数组在大多数系统上是600000000字节(600MB)。而且,大多数情况下,当您推送到数组时,浏览器会分配一个新的内存块,而垃圾收集器不会立即释放内存。如果内存有问题,请使用具有一个数字的Array构造函数来表示元素的数量,以执行较少的分配。您也可以使用类型化数组,但修改它们是CPU密集型的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52907713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档