既にQuestionを読んでいますが、わかりやすい答えにはなりませんでした。javascriptの大きな配列の項目数制限はありますか
私は定義済みのサイズの配列new Array(105119296)
を持っています。 その後、配列が定義された後、ループを開始して各インデックスに値を設定しました。 このプロセスは通常、Webワーカーで実行されますが、ブラウザと同様に直接クラッシュします。
11184811の反復の後にChrome Mac 50.0.2661.102 (64-bit)
実行がクラッシュします。
以下のスクリプトは状況を再現します。
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');
一般的に私の質問は:
は、アレイはJavaScriptで保持できる大きさに制限はありますか?そして、なぜそうでないのであれば、Webワーカーで正しく動作していないことがあります。これは、ブラウザの視界を妨げる重い作業を理解するためのものです。
Chromeでは、最大配列サイズは1e9〜1e10の範囲です。 –
そして、クラッシュは配列のサイズではなく、反復回数に関係します。通常のループでもクラッシュします。 –
JSで1億アイテムを繰り返しているのはなぜですか?あなたは本当に最良のアプローチを使用していますか? –