javascript中的大型数组是否有项目限制

时间:2016-05-24 18:57:31

标签: javascript google-chrome crash

已经阅读了这个Question,但没有得出一个可以理解的答案。

我有一个预定义大小的数组Chrome Mac 50.0.2661.102 (64-bit)。 然后在定义数组后,我开始循环以用值填充每个索引。 这个过程通常在webworker中运行,但在那里以及在浏览器中直接崩溃。

var len = 105119296; var arr = new Array(len); for(var i=0;i<len;i++){ var data = 0;// Math.round(Math.random()*10); if(i>11184810){ console.log(i + '->' + data); // At 11184811 Chrome dev tool crashes } arr[i] = data; } console.log('done'); 中的11184811次迭代后,执行崩溃。

下面的脚本再现了这种情况。

import boto3
boto3.setup_default_session(region_name='us-east-1')
identity = boto3.client('cognito-identity', 
                        region_name='us-east-1')

response = identity.get_id(AccountId='12344566', IdentityPoolId='us-east-1:XXXXXX')
identity_id = response['IdentityId']
print ("Identity ID: %s"%identity_id)

response = identity.get_open_id_token(IdentityId=identity_id)
token = response['Token']
print ("\nToken: %s"%(token))

resp = identity.get_credentials_for_identity(IdentityId=identity_id)
secretKey = resp['Credentials']['SecretKey']
accessKey = resp['Credentials']['AccessKeyId']

print ("\nSecret Key: %s"%(secretKey))
print ("\nAccess Key %s"%(accessKey))

我的问题一般是:

数组在javascript中可以容纳的大小是否有限制?如果没有,为什么这样的事情在网络工作者中没有正常运行,这是因为我理解了阻碍浏览器视图的繁重任务。

1 个答案:

答案 0 :(得分:-2)

我在类似的问题中找到了这个答案: Maximum size of an Array in Javascript

  

直到&#34;它变得迟缓的最大长度&#34;完全依赖于您的目标计算机和您的实际代码,因此您需要在那些(那些)平台上进行测试以查看可接受的内容。

     

但是,由于ToUint32抽象操作,根据ECMA-262第5版规范的数组的最大长度受无符号32位整数的约束,因此最长的数组可能有2 ^ 32-1 = 4,294,967,295 = 42.9亿元素。