我写了一个"幻灯片",可以按顺序快速显示图像,就像定格电影一样。
一旦显示图像,我就没有进一步的用途了,并希望将其从内存中清除以释放新图像的空间。但是,在活动监视器中监视Google Chrome助手时,我看到内存继续稳步增加,直到浏览器崩溃。
我注意到一个作为错误提交的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 并且......噢,啪。
首先如何减轻这种猖獗的内存消耗?
任何对话或基于代码的反馈将不胜感激。
尝试只做一个"new Image()",并重用它,而不是在循环中创建许多。 这帮助我解决了同样的问题。
webworkers ? 也许?
====
==========最近看到了一些关于....如果您声明一个变量,例如...
变量温度 = 0;
而不是实际声明变量。 而只是给它分配一些东西。
var tempa = 0;//不要做
temp_no_var = 0;//有某种"删除"功能可以从内存中删除变量,或者更确切地说是减少内存空间。
也许在使用图像后,只需将其同化为 null 或 0.与将图像数据保留在变量中并希望等待垃圾回收。
==================重用变量,而不是制作不断增长和增长的巨大数组。
==================查看ImageMagik并了解如何创建" GIF"动画图片。如果影片剪辑 errr 图像集中的信息不会更改。