将许多新图像绘制到画布时内存泄漏

时间:2013-11-08 03:14:32

标签: javascript image google-chrome canvas memory-leaks

我写了一个“幻灯片放映”,可以顺序快速地显示图像,就像一个画框电影。

一旦显示图像,我就不再使用它了,并希望从内存中清除它以释放新图像的空间。但是,在Activity Monitor中监控Google Chrome Helper时,我发现在浏览器崩溃之前内存会继续稳定增长。

我注意到a chrome garbage collection issue是作为错误提交的,我想知道我是否遇到过这个问题?

否则,以下是我根据this post尝试使用Chrome来删除旧图像数据的一个示例。

  function ClearChunk()
  {      
        imageSet1 = null; // garbage collect please?
        imageSet1 = [];
  }

  function LoadNewChunk()
  {
        for (i=start_of_chunk;i<end_of_chunk;i++)
        {
              imageSet1[i-start_of_chunk] = new Image();
              imageSet1[i-start_of_chunk].src = img[i]; 
        }
  }

首先清除,然后在后台加载,同时显示另一个图像阵列。这在当时似乎是一个好主意,但在我的机器上它仍然稳步上升到大约3Gb和...... Aw,Snap。

如何首先缓解这种猖獗的内存消耗?

任何会话或基于代码的反馈都将受到赞赏。

2 个答案:

答案 0 :(得分:3)

尝试只做一个'new Image()',并重用它,而不是在循环中创建很多。这有助于我解决同样的问题。

答案 1 :(得分:-1)

网络工作者?也许 ?

==============

最近看到了一些...... 如果你声明一个像...的变量

var tempa = 0;

vs实际上没有声明变量。但只是分配一些东西。

var tempa = 0; //不要做

temp_no_var = 0; //有某种“删除”功能可以从内存中删除变量,或者减少内存空间。

也许在使用图像后简单地将其设为null或0. vs将图像数据保留在变量中并希望等待垃圾收集。

================== 重新使用变量,制作巨大的数组,不断增长和发展。

================== 看看imagemagik,看看有关创建“GIF”动画的图片。如果影片剪辑中的信息错误的图像集,则不会改变。