Val*_*Val 2 javascript json memory-management
我想知道有没有人知道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>
Run Code Online (Sandbox Code Playgroud)
该脚本构建了一个巨大的数组.在每次迭代中,使用10,000个对象创建一个较小的数组并将其推送到主数组.每个对象包含5个成员:2个数字,2个字符串和1个日期.我计算迭代次数.
我在两台计算机上测试了这个脚本,除了IE7和IE8,我只有一台计算机可用.第一台计算机运行带有2GB内存的Windows XP,第二台计算机运行带有4GB内存的Windows 7.
我得到了以下结果: