我写了一个“幻灯片放映”,可以顺序快速地显示图像,就像一个画框电影。
一旦显示图像,我就不再使用它了,并希望从内存中清除它以释放新图像的空间。但是,在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。
如何首先缓解这种猖獗的内存消耗?
任何会话或基于代码的反馈都将受到赞赏。
答案 0 :(得分:3)
尝试只做一个'new Image()',并重用它,而不是在循环中创建很多。这有助于我解决同样的问题。
答案 1 :(得分:-1)
==============
最近看到了一些...... 如果你声明一个像...的变量
var tempa = 0;
vs实际上没有声明变量。但只是分配一些东西。
var tempa = 0; //不要做
temp_no_var = 0; //有某种“删除”功能可以从内存中删除变量,或者减少内存空间。
也许在使用图像后简单地将其设为null或0. vs将图像数据保留在变量中并希望等待垃圾收集。
================== 重新使用变量,制作巨大的数组,不断增长和发展。
================== 看看imagemagik,看看有关创建“GIF”动画的图片。如果影片剪辑中的信息错误的图像集,则不会改变。