【发布时间】:2010-11-24 16:40:40
【问题描述】:
我有一个基于 AJAX 的网站,在客户端使用 JavaScript。站点上的某些操作会缓存来自浏览器中服务调用的大型结果集(即数百兆字节)。这些都是一次性的结果。它们将被查看一小段时间,然后需要从内存中清除。
我编写了一个小型测试站点,它在内存中加载一堆垃圾,然后调用 JavaScript 的 delete 方法。这在 Firefox 中效果很好(内存几乎立即返回)。 Internet Explorer 8(尚未尝试 7)在页面刷新或关闭之前不会释放内存。
有谁知道如何使用 JavaScript/Ajax(无页面刷新)降低 IE 的内存使用量?
下面是我的示例客户端代码:
function load() {
var x = ['dfjasdlfkjsa;dflkjsad;flkjsadf;lj'];
for( var i = 0; i < 10000000; ++i ) {
x.push('asdfasfasfsfasdfkasjfslafkjslfjsalfjsaldfkjasl;dfkjsadfl;kjsdflskajflskfjslakfjaslfkjsaldfkjsaldfksdfjk');
}
alert('deleting'); // <--- memory usage around 500mb
delete x; // <--- immediate results in Firefox 3.5 (not IE8)
alert('done');
}
更新: 将变量设置为“null”不会立即清除内存(因为这由垃圾收集器决定)。此外,将变量设置为 null 只会获得一个引用,而其中可能有多个引用。
【问题讨论】:
标签: javascript ajax internet-explorer memory memory-management