Рассматривая типы 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) различных значений «не числа» стандарта IEEE представлены в ECMAScript как отдельное специальное значение NaN.
Но тогда я ничего не вижу об объектах.
Что я могу ожидать для использования в браузерах? Есть ли какая-нибудь база кода, которая помогает управлять очень большими объектами и строками?
Сколько памяти я могу выделить в одном скрипте?