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

我有一个简单的单页应用程序,可以无限期地滚动一堆照片,意味着一次在显示器上运行几天。

由于大量滚动图片,Chrome 中的内存使用量不断增长。我想要一种以编程方式每隔一段时间(每隔几个小时)减少内存消耗的方法。

当我以编程方式停止动画时,内存占用量仍然没有下降。即使我使用 location.reload(); 重新加载页面,它也不会关闭。

有没有办法做到这一点?如何以编程方式“清除所有内容”与关闭选项卡具有相同的效果?

仅供参考,在 Firefox 中没有内存问题。就在 Chrome 中。代码非常简单,使用 requestAnimationFrame 不断地在屏幕上为两个 div 设置动画。我没有在任何地方积累参考资料。我的问题不是关于我的代码,而是关于重置选项卡内存的一般方法(如果可以的话)。

stack overflow How to clear browser memory with Javascript
原文答案

答案:

作者头像

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

作者头像

请使用 chrome 或 Firefox 内存调试器找出内存泄漏的位置。然后,当您找到时,请考虑如何清理这些对象。

内存泄漏的合理原因是:

1.您正在加载大图像,您需要在服务器上调整它的大小,或者只是将它绘制到较小的画布上
2.你的dom元素太多(例如超过10000个)
3.你有一些js对象,正在长大,你没有清理它。

在任务管理器中您会看到,内存使用率非常高。如果你把地址栏 about memory 放在火狐上,你可以看到内存发生了什么,然后按下按钮“测量”。