已经阅读了这个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中可以容纳的大小是否有限制?如果没有,为什么这样的事情在网络工作者中没有正常运行,这是因为我理解了阻碍浏览器视图的繁重任务。
答案 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亿元素。