如何在Ajax请求后释放内存

时间:2010-08-05 18:43:43

标签: javascript ajax memory browser memory-leaks

我的网站上有一个非常基本的ajax幻灯片。在每个滚动条上,新图像和响应内容不断增加浏览器使用的内存量。

我已经完成了我的研究并尝试了在每个新请求上重置XHR对象的所有建议,但这绝对没有任何帮助。

幻灯片是基本的,但可能包含数百张幻灯片。我希望用户能够无限制地浏览幻灯片,而不会崩溃他们的浏览器。这甚至可能吗?

谢谢,Brian

2 个答案:

答案 0 :(得分:5)

增加内存使用率是正常的。毕竟,您每次都要加载更多数据 - 来自AJAX响应的HTML,以及正在显示的图像。除非您使用的是Adobe Pagemill生成的HTML,否则只需几百字节的HTML /文本。这是将吸收最多空间的图像。所有东西都塞进浏览器的缓存中。

由于你没有直接使用DOM(构建子树和诸如此类的东西)做任何事情,只是重复地替换一大块HTML,最终浏览器会进行清理并查看一些未使用的/旧的/陈旧的图像来自内存/缓存的数据并回收一些内存。

现在,如果你正在进行一些高度复杂的DOM操作并在运行中生成大量新节点,并且在这里和那里泄漏了一些节点,那么你就会遇到内存问题,因为那些泄漏的节点最终会埋葬浏览器。

但是,只需通过加载图像来增加内存使用量就不用担心了,它就像普通的扩展冲浪会话一样,除了你只是加载一些新图片。

答案 1 :(得分:0)

如果是幻灯片,您是否一次只显示一张图片?如果你一次只显示一个并且你永远不会删除你显示的最后一个,它将总是增加内存。如果你删除未显示的幻灯片,它应该会有所帮助。