【问题标题】:How to clear images from memory - after removing from DOM如何从内存中清除图像 - 从 DOM 中删除后
【发布时间】:2015-11-21 20:55:16
【问题描述】:

我有 javascript 可以创建几十个 <div> 元素加载带有 background-image:url(http://differentDomain.com/someImage.jpg) 的图像

它们都附加到<div id = "container">

在图像显示在屏幕上并完成 css 动画后,我删除容器:

var c = document.getElementById('container')
c.parentNode.removeChild(c);

删除后我得到一组新图像,创建一个新容器并再次启动该过程。

问题是 - 移除容器后,页面并没有清除内存,并继续在内存中无限膨胀 - 在图像中,经过几次迭代后内存已经膨胀。

有没有更优化的方式从 DOM 中移除? 这可以与在图像上使用 css 动画相关联吗?

【问题讨论】:

  • 我真的不认为这是原因,但您是否保留对容器或其内容的任何引用,或者是否将删除的节点发送到垃圾收集?
  • @JacqueGoupil 似乎我没有对该对象的任何引用,但我发现很难确定
  • @JacqueGoupil 删除所有引用后,图像缓存仍然很低,但内存列仍然很高,并且每次迭代都会继续增长
  • 嗯,那我就不知道了。对不起:/

标签: javascript google-chrome dom memory-management


【解决方案1】:

如您的数据所示,图像位于浏览器缓存中,并且 DOM 不包含图像。那不是它的作用。可能你在你的网站上实现了缓存。从内存中删除这些图像的唯一方法是首先不将图像作为可缓存的图像提供,并让浏览器自行删除它们,浏览器和操作系统可能会这样做。

在 cmets 中,@Jacque 提出了一个关于引用的有趣观点,这可能是一个值得思考的问题。

【讨论】:

  • 看来这种行为是按计划进行的。无论 DOM 操作如何,我系统上的图像缓存都保留在内存中。
猜你喜欢
  • 2014-07-18
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
  • 2023-03-29
  • 2015-07-01
  • 1970-01-01
相关资源
最近更新 更多