对于类型的Javascript最大尺寸是多少?对于类型的Javascript最大尺寸是多少?(Jav

2019-05-12 07:33发布

寻找到JavaScript类型我试图找出一些数据类型的最大存储大小。 举例来说,我成立了一个快速递归算法中增加对我现有的Chrome浏览器版本字符串VAR的大小,直到浏览器崩溃,这最终成为地方接近128MB(或者也许是256)。

我一直在做痛苦的方式,因为我无法找到任何这规格,但不断的浏览器崩溃使这是一个痛苦的试验(试捕好像没用出于某种原因这个特定问题)。

我在寻找大约可存放大小为其他类型的信息也(数组,对象,函数,字符串,数字,布尔变量...)

EMCA-262 8.4节是为这一模糊

字符串的长度为在其内的元件(即,16位值)的数量。 空字符串的长度为零,因此不包含任何元素。

...所以也许这是要在浏览器中实现确定的东西,需要?

然而ECMA没有告诉我们关于数字,例如,

号码类型具有完全相同18437736874454810627(即,2 ^ 64-2 ^ 53 + 3)的值,如在IEEE标准二进制浮点算术指定,除了将表示双精度64位格式的IEEE 754值9007199254740990(即,2 ^ 53-2)不同“不是一个号码”的IEEE标准的值在ECMAScript中被表示为单个特殊的NaN值。

但我没有看到有关对象的任何东西。

我可以期待在浏览器中使用的是什么? 是否有任何的代码库,在那里,帮助管理非常大的对象和字符串?

我多少内存可以在一个脚本分配?

Answer 1:

正如你已经指出,该规范没有说明除了任何类型的大小限制/需求Number

因此,这是definitally留给实施。

例如,Chrome的对字符串的限制似乎在512MB左右(少上32位)被硬编码。

这使得限制在2 ^ 27-1 32位版本的最大可能的分配请求。 最大扁带长度为〜2 ^ 28(512MB空间),并且最大字符串长度为2 ^ 29-1,所以没有这些限制抓住问题,如果他们做到了(我们将抛出一个彻头彻尾的内存异常,而不是)。

请参阅: http://code.google.com/p/v8/issues/detail?id=362#c9

至于其他浏览器去,这将需要一些研究,比如寻找到Firefox的代码。 但我怀疑,我们可以对IE /歌剧这样做。



Answer 2:

ECMA 6.1.4节是明确这一点。

“字符串类型是所述一组零个或多个16位无符号整数值的所有有序序列(‘元素’)达到2 ^ 53-1元素的最大长度”



Answer 3:

我列出了在字符串中一些典型的限制另一种答案 。 基本上,你是在安全的领土高达2 27个字符的字符串长度。



文章来源: Javascript maximum size for types?