我新接触JavaScript,似乎遇到了一些跟踪内存泄漏的问题。由于代码相当复杂,我已经将其缩小到一个部分,似乎是引起内存泄漏的原因。我将发布一个不同的示例,将其简单化,但会导致相同的问题(只是小得多)。
基本上,我有一些动态构建HTML和附加事件到HTML的代码。 HTML会在每个AJAX请求中重新构建。这一切第一次都工作得很好,但是在每个AJAX请求之后,浏览器内存增加(不总是相等)!在JSFiddle上多次点击运行,就可以重现这个问题,并观察浏览器的内存。我的假设是创建的闭包永远不会被垃圾回收,但我不确定?如果是这种情况,有没有更好的方法来避免闭包而不会引起任何问题?
这在FF8、最新版的Chrome和IE 8中发生。很可能所有其他浏览器也是如此 - 这只是我测试过的。
我在代码中放了一些注释应该会有帮助。
谢谢!
编辑: 好的,经过使用sIEve进行更多研究,我发现每次AJAX调用时DOM节点数量会增加一倍。我已更新示例以模拟此情况。那么我的问题是,为什么在调用jQuery empty或remove函数后DOM元素没有被垃圾回收?我还循环遍历了stuff中的元素,解除事件处理程序并将每个DOM元素的js引用设置为null,但没有影响...