персонажи.

атривая типы javascript, я пытаюсь выяснить, каков максимальный размер хранилища для некоторых типов данных. Например, я настроил быстрый рекурсивный алгоритм для увеличения размера var до тех пор, пока браузер не выйдет из строя, который в итоге будет где-то около 128 МБ (или, может быть, 256) для строк в моей существующей версии Chrome.

Я делал это болезненным способом, потому что я не мог найти никаких спецификаций по этому вопросу, но постоянные сбои браузера делают это болезненным испытанием (попытка catch кажется бесполезной по какой-то причине с этой конкретной проблемой).

Я ищу информацию о максимальном размере хранилища для других типов (массив, объект, функции, строки, числа, bools ...)

EMCA-262 раздел 8.4 расплывчат на этом

Длина строки - это количество элементов (то есть 16-битных значений) внутри нее. Пустая строка имеет нулевую длину и поэтому не содержит элементов.

... так что, возможно, это то, что нужно идентифицировать как реализованное в браузерах?

ECMA, однако, говорит нам о цифрах, например,

Тип Number имеет ровно 18437736874454810627 (то есть 2 ^ 64−2 ^ 53 + 3) значений, представляющих значения IEEE 754 с 64-разрядным форматом двойной точности, как указано в стандарте IEEE для двоичной арифметики с плавающей запятой, за исключением того, что 9007199254740990 (т. Е. 2 ​​^ 53−2) различные значения «Not-a-Number» стандарта IEEE представлены в ECMAScript как одно специальное значение NaN.

Но тогда я ничего не вижу об объектах.

Что я могу ожидать для использования в браузерах? Есть ли какая-нибудь база кода, которая помогает управлять очень большими объектами и строками?

Сколько памяти я могу выделить в одном скрипте?

Ответы на вопрос(3)

«Тип String - это набор всех упорядоченных последовательностей с нулевыми или более 16-разрядными целочисленными значениями без знака (« элементы ») до максимальной длины 2 ^ 53-1 элементов»

другой ответ, В основном вы находитесь на безопасной территории длиной до 2 строк27 персонажи.

Решение Вопроса

не указать любые ограничения размера / требования к типам, кромеNumber.

Так что это определенно оставлено для реализации.

Например, ограничение Chrome на строки кажется жестко закодированным на уровне около 512 МБ (и меньше на 32-битной).

Это накладывает ограничение на максимально возможный запрос выделения в 32-битных версиях 2 ^ 27-1. Максимальная длина плоской строки составляет ~ 2 ^ 28 (пространство 512 МБ), а максимальная длина строки - 2 ^ 29-1, поэтому ни одно из этих ограничений не решает проблему (вместо этого мы бы сгенерировали исключение Out-Of-Memory, если бы они это сделали ).

Видеть:http://code.google.com/p/v8/issues/detail?id=362#c9

Что касается других браузеров, это потребует некоторых исследований, например, изучая код Firefox Но я сомневаюсь, что мы можем сделать то же самое для IE / Opera.

 Incognito14 янв. 2011 г., 21:22
@siebetman Это очень верно, но на практике мы ограничены реализацией или архитектурой процессора ...cplusplus.com/reference/string/string/max_size Установлен ли объем памяти для программы? Много вопросов, которые важны, если мы углубимся в идею «все в облаке».
 hashchange03 мар. 2015 г., 15:05
@slebetman ОП спросил: «Какова максимальная длина строки в Javascript, которую я могу безопасно использовать в браузерах?». Это верный вопрос, и он вовсе не аналогичен вопросу о том, «сколько оперативной памяти имеет компьютер». Физическая память простоодин ограничивающих факторов. Другие, более жесткие ограничения ограничивают длину строки. Теперь, в 2015 году, Chrome все еще взрывается, когда длина строки составляет 2 ^ 28 символов.
 Incognito14 янв. 2011 г., 21:07
Таким образом, действительно нет центральной области для этого типа информации?
 Ivo Wetzel14 янв. 2011 г., 21:09
Не совсем, но опять же, если вы выходите за эти пределы, скорее всего, вы делаете что-то, что не соответствует среде браузера :) Хотя все еще интересно получить информацию, но, как я уже сказал, вам придется сделать много копаться в гугле и т. д., чтобы найти его.
 slebetman14 янв. 2011 г., 21:17
Как и на любом другом языке, спрашиваяwhat is the maximum length of a string аналогично просьбеhow mush RAM does the computer have, Реализации могут ограничивать или не ограничивать его (например, в случае Chrome), но в конце дня строка представляет собой просто массив байтов (и фактически в большинстве интерпретаторов javascript это просто тонкая оболочка вокруг нулевого значения). прекращено C строк).

Ваш ответ на вопрос