Я не верю, что существуют жесткие ограничения, но мне было любопытно посмотреть, что произойдет, поэтому я написал небольшой специальный тестовый сценарий:
<!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 с оперативной памятью 2 ГБ, второй - под управлением Windows 7 с оперативной памятью 4 ГБ.
Я получил следующие результаты:
- IE 7 :Счетчик остановился на 52, прежде чем он замерз.Браузер стал полностью безразличным.Предупреждение не отображалось.Я должен был убить процесс.
- IE 8 : счетчик дошел до 108. Браузер перестал отвечать на запросы.Предупреждение не отображалось.Мне пришлось убить процесс.
- Firefox 3.6 : счетчик перешел на 289 на первом компьютере и 580 на втором.В этот момент было показано предупреждение (Возможно, сценарий на этой странице занят, или он перестал отвечать. Вы можете остановить сценарий сейчас, или вы можете продолжать видеть, завершится ли сценарий.) Поскольку браузер очень не отвечал, я остановил скрипт.
- Opera 11 : счетчик перешел на 235 на первом компьютере и на 232 на втором.Браузер был немного медленным.Предупреждение не отображалось.
- Chrome 8 : счетчик перешел на 327 на обоих компьютерах, поэтому, похоже, достигнут жесткий предел.Браузер все еще был очень отзывчивым.Предупреждение не отображалось.