Przeglądając typy javascript, próbuję dowiedzieć się, jaki jest maksymalny rozmiar pamięci dla niektórych typów danych. Na przykład skonfigurowałem szybkie rekursywne algo, aby zwiększyć rozmiar var do momentu awarii przeglądarki, która kończy się gdzieś w pobliżu 128 MB (lub może 256) dla ciągów w mojej istniejącej wersji chrome.Maksymalny rozmiar Javascript dla typów?
Robiłem to bolesny sposób, ponieważ nie mogłem znaleźć żadnych specyfikacji na ten temat, ale stałe awarie przeglądarki sprawiają, że jest to bolesna próba (spróbuj złapać wydaje się bezużyteczna z jakiegoś powodu z tym szczególnym problemem).
szukam informacji o maksymalnej wielkości pamięci dla innych typów także (array, obiekt, funkcje, ciągi, liczby, bools ...)
EMCA-262 Sekcja 8.4 jest niejasne w tej
Długość ciągu jest liczbą elementów (tj. Wartości 16-bitowych) w nim. Pusty łańcuch ma długość zero i dlatego nie zawiera żadnych elementów.
... więc może jest to coś, co należy zidentyfikować jako zaimplementowane w przeglądarkach?
ECMA ma jednak nam powiedzieć o liczbach, np
typ numeru ma dokładnie 18437736874454810627 (czyli 2^64-2^53 + 3), reprezentujące wartości podwójnej precyzji 64- bitowe wartości IEEE 754 określone w standardzie IEEE dla binarnej arytmetyki zmiennoprzecinkowej, z tą różnicą, że w ECMAScript jako reprezentowane są wartości 9006799254740990 (tj. 2^53-2) "Nie liczba" w standardzie IEEE pojedyncza specjalna wartość NaN.
Ale wtedy nie widzę niczego na temat obiektów.
Czego można się spodziewać w przeglądarkach? Czy jest tam jakaś podstawa kodu, która pomaga zarządzać bardzo dużymi obiektami i ciągami?
Ile pamięci można przydzielić w jednym skrypcie?
Tak jest rzeczywiście brak centralnego obszaru dla tego typu informacji? – Incognito
Niezupełnie, ale z drugiej strony, jeśli uderzasz w te ograniczenia, najprawdopodobniej robisz coś, co nie pasuje do środowiska przeglądarki :) Chociaż nadal jest to interesujące, aby dostać się do informacji, ale jak powiedziałem, będziesz musiał zrobić dużo kopania w Google itp., aby go znaleźć. –
Podobnie jak w jakimkolwiek innym języku, pytanie "jaka jest maksymalna długość ciągu znaków" jest analogiczne do pytania 'jak papka RAM ma komputer '. Implementacje mogą, ale nie muszą go ograniczać (jak na przykład Chrome), ale pod koniec dnia ciąg znaków jest po prostu tablicą bajtów (a tak naprawdę w większości interpreterów javascript jest to tylko cienkie opakowanie zakończone znakiem NUL Struny C). – slebetman