我正在处理的应用程序中似乎有一些相当大的内存泄漏。该应用程序本身并不是很复杂。每 15 秒,页面从服务器请求大约 40kb 的 JSON,并使用它在页面上绘制一个表格。将表格绘制过来更便宜,因为数据通常总是新的。我将一些事件附加到表格中,每行大约 5 个,表格中有 30 行。我使用 jQuery 的 .html() 方法将新的 html 放入容器并覆盖现有的。我专门这样做是为了让 jQuery 的特殊清理函数进入并尝试分离它正在覆盖的元素中的元素上的所有事件。然后,我还会使用 delete my_var
将 html 的大变量发送到 DOM 后将其删除。
我检查了几次从未清除的循环引用和附加事件,但从未真正深入研究过。我想知道是否有人可以给我一些关于如何优化这样一个非常繁重的应用程序的指示。我刚刚学习了 Nicholas Zakas 的“高性能 Javascript”,但还没有太多时间深入研究。
为了了解这使用了多少内存,4 ~ 小时后,它在 chrome 上使用了大约 420,000k,在 Firefox 或 IE 上使用更多。
谢谢!
最佳答案
我建议您编写一个没有事件的脚本测试版本。 DOM/JS 循环引用可能很难发现。通过从等式中删除一些变量,您可能能够稍微缩小搜索范围。
关于javascript - 随着时间的推移,Ajax 繁重的 JS 应用程序使用过多的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4696382/