gpt4 book ai didi

javascript - 什么是 DOM js 内存容量?

转载 作者:行者123 更新时间:2023-11-29 16:27:16 27 4
gpt4 key购买 nike

我想知道是否有人知道 dom 的限制是什么。

如果我有一个 json 对象

var json = {}

这个 json 对象内部有自己的对象,包括数组、其他对象或事件纯文本。

如果存在限制,json 可以容纳多少个子对象,如果对象的大小动态增加,会显示错误吗?因为没有更多的内存来处理它等等...

最佳答案

我不相信存在硬性限制,但我很好奇会发生什么,所以我编写了一个临时测试脚本:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script language="javascript">
window.onload = function() {
var data = [];
var i = 0;

var addData = function() {
var arr = [];
i++;

for(var j=0; j<10000; j++) {
arr.push({
id: i + j,
name: "item" + j,
number: i * j,
date: new Date(),
email: "long_email" + i + "@domain" + j + ".com"
});
}

data.push(arr);
document.getElementById("result").innerHTML = i.toString();
window.setTimeout(addData, 1);
};

addData();
};
</script>
</head>
<body>
<div id="result"></div>
</body>
</html>

该脚本构建了一个巨大的数组。在每次迭代中,都会创建一个包含 10,000 个对象的较小数组,并将其推送到主数组。每个对象包含 5 个成员:2 个数字、2 个字符串和 1 个日期。我计算迭代次数。

我在两台计算机上测试了这个脚本,除了 IE7 和 IE8,我只有一台计算机可用。第一台计算机运行 Windows XP,配备 2GB 内存,第二台计算机运行 Windows 7,配备 4GB 内存。

我得到了以下结果:

  • IE 7:计数器在卡住之前停在 52。浏览器变得完全没有响应。没有显示任何警告。我不得不终止该进程。
  • IE 8:计数器达到 108。浏览器完全没有响应。没有显示任何警告。我不得不终止该进程。
  • Firefox 3.6:第一台计算机上的计数器为 289,第二台计算机上的计数器为 580。此时出现警告(此页面上的脚本可能正忙,或者可能已停止响应。您可以立即停止该脚本,或者可以继续查看脚本是否会完成。) 由于浏览器 react 非常迟钝,我停止了脚本。
  • Opera 11:第一台计算机上的计数器为 235,第二台计算机上的计数器为 232。浏览器有点滞后。没有显示任何警告。
  • Chrome 8:两台计算机上的计数器均变为 327,因此看起来已达到硬限制。浏览器的 react 仍然非常灵敏。没有显示任何警告。

关于javascript - 什么是 DOM js 内存容量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4742954/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com