2016-05-24 20 views
0

既に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ワーカーで正しく動作していないことがあります。これは、ブラウザの視界を妨げる重い作業を理解するためのものです。

+0

Chromeでは、最大配列サイズは1e9〜1e10の範囲です。 –

+0

そして、クラッシュは配列のサイズではなく、反復回数に関係します。通常のループでもクラッシュします。 –

+0

JSで1億アイテムを繰り返しているのはなぜですか?あなたは本当に最良のアプローチを使用していますか? –

答えて

-2

私は同様の質問にこの答えを見つけた:「それは低迷なる」まで、最大長がターゲット・マシンとあなたの実際のコードに完全に依存しているので、あなたがテストする必要があります Maximum size of an Array in Javascript

受け入れられるものを見るためにそれらのプラットホーム(群)。

しかし、ECMA-262第5版仕様による配列の最大長は、ToUint32抽象演算のために符号なし32ビット整数にバインドされているため、最長の配列は2^32-1 = 4,294,967,295 = 42.9億要素。

関連する問題