以下是在IE8中测试的代码:
var stack = [];
function test() {
var i = 0;
while(i++ < 100000) {
stack[i] = {a: "some string"};
delete stack[i];
};
}
test();这个脚本在IE中只占用很少的内存。Windows任务管理器显示29704K,但下一条:
var stack = [];
function test() {
var i = 0;
while(i++ < 100000) {
stack[i] = {a: "some string"};
};
i = 0;
while(i++ < 100000) {
delete stack[i];
}
}
test();它使用54860K内存。我想知道为什么或者如何以其他方式释放内存。
感谢你的帮助。
发布于 2012-06-23 11:23:28
如果您只是在系统级别查看浏览器的总内存使用量,那么您可能会查看浏览器的最大内存使用量,而不是实际使用的内存量。仅仅因为您在浏览器中释放了一些空间,并不意味着浏览器会将这些内存返回给操作系统。该内存可能可供将来在浏览器中重用,但尚未返回给操作系统。
与第一个示例相比,第二个示例的峰值内存使用率更高,因为您在删除元素之前完全填充了数组。因此,如果由于更高的峰值使用而在系统级别显示更大的内存使用量,也就不足为奇了。这并不意味着更高的内存量仍在使用中,只是浏览器必须从系统请求更多的内存来处理更高的峰值使用率,并且浏览器不一定将现在未使用的内存返回给操作系统。这些内存将位于浏览器的空闲内存池中,可供将来的内存请求使用,因此不会发生内存泄漏。
https://stackoverflow.com/questions/11166540
复制相似问题