我试图弄清楚为什么 IE 在将 AJAX 请求的 HTML 页面包装在 jQuery 对象中进行处理时会泄漏内存。用户可能会访问页面并让它停留几分钟或几小时,因此页面ajax
每分钟使用几次 jQuery 的方法来获取新数据,然后我将页面的重要部分替换为新的预渲染数据。
在这一点上,我已将其缩小到一个调用 - 当$(data)
调用包装 HTML 字符串时,内存会出现一点峰值,并且似乎从来没有被垃圾收集。随着时间的推移,使用了数百 MB,我被迫重新加载页面或重新启动 IE。
这个小提琴能够重现这个问题。它使用 AJAX 请求页面,然后$(data)
在紧密循环中调用以夸大泄漏。Chrome 和 Firefox 似乎都像我预期的那样做出反应(内存被回收),但 IE 表现不佳。惊喜。
使用 Process Explorer,我发现在运行上述小提琴两次后内存消耗急剧增加。
我目前在标准模式下使用 IE9。
为什么会这样?有解决方法吗?
更新
这是一个在不使用 AJAX 的情况下演示该问题的小提琴。