如何使用Javascript清除浏览器内存

6
我有一个简单的单页应用程序,可以无限滚动一堆照片,旨在连续运行数天的显示器上使用。
由于滚动图片数量众多,Chrome中的内存使用量不断增长。我想要一种在间隔(每几个小时)内以编程方式降低内存消耗的方法。
当我通过编程方式停止动画时,内存占用仍然不会下降。即使我使用 location.reload(); 重新加载页面,它也不会下降。
有没有办法做到这一点?我如何以编程方式“清除所有内容”,具有与关闭选项卡相同的效果?
FYI,在Firefox中没有内存问题。只有在Chrome中存在问题。代码非常简单,使用requestAnimationFrame不断地在屏幕上动画两个div。我没有在任何地方累积引用。我的问题不是关于我的代码,而是关于重置选项卡内存的一般方法,如果可以的话。

1
这感觉像是一个内存泄漏,可能值得向Chrome开发人员报告。 - apokryfos
2个回答

1
请使用Chrome或Firefox内存调试器找出内存泄漏的位置。然后,当您找到时,请考虑如何清理这些对象。
内存泄漏的合理原因包括:
1. 您正在加载大型图像,您需要在服务器上调整其大小,或者简单地将其绘制到较小的画布上。 2. 您有太多的DOM元素(例如超过10000个)。 3. 您有一些JS对象正在增长,而您没有进行清理。
当任务管理器中显示内存使用率非常高时。如果您在Firefox中将地址栏设置为about memory,然后按“Measure”按钮,就可以查看内存使用情况。

0

您可以使用location.reload(true),这样它会清除所有的内存(缓存等)。此外,如果您想要进一步清除浏览器中的存储,则可以在您的JavaScript代码中使用localStorage.clear()。如果您已经保存了类似localStorage.myItem = "something"这样的东西,它会清除localStorage中存储的项目。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接