1

我编写了一个“幻灯片放映”,它可以按顺序快速显示图像,就像定格电影一样。

显示图像后,我将不再使用它,并想将其从内存中清除以腾出空间用于新图像。但是,在 Activity Monitor 中监视 Google Chrome Helper 时,我看到内存继续稳定增加,直到浏览器崩溃。

我注意到一个作为错误提交的 chrome 垃圾收集问题,我想知道我是否正在经历这个问题?

否则,这是我根据这篇文章尝试的一个技巧示例,它可以让 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 并且...... 哦,Snap。

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

任何对话或基于代码的反馈将不胜感激。

4

2 回答 2

3

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

于 2014-01-14T19:51:50.160 回答
-1

网络工作者?也许 ?

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

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

变种温度 = 0;

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

变种温度 = 0; // 不要做

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

也许在使用图像之后,只需将其赋值为 null 或 0。将图像数据留在变量中并希望等待垃圾收集。

================== 重用变量,而不是制作不断增长的巨大数组。

================== 查看 imagemagik 并了解如何创建“gif”动画图片。如果影片剪辑 errr 图像集中的信息不改变。

于 2013-11-11T21:07:48.913 回答