2016-05-24 7 views
0

Lesen Sie bereits Question, aber kam nicht zu einer verständlichen Antwort.Gibt es ein Item-Limit für große Arrays in Javascript

Ich habe ein Array new Array(105119296) mit einer vordefinierten Größe. Dann, nachdem das Array definiert wurde, startete ich eine Schleife, um jeden Index mit einem Wert zu füllen. Dieser Prozess läuft normalerweise in einem Webworker, stürzt aber dort genauso ab wie im Browser.

Nach 11184811 Iterationen in Chrome Mac 50.0.2661.102 (64-bit) stürzt die Ausführung ab.

Das folgende Skript reproduziert die Situation.

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'); 

Meine Frage ist im Allgemeinen:

Gibt es eine Grenze für die Größe eines Array in Javascript halten kann? Und wenn nicht, warum läuft so etwas in einem Webworker nicht richtig, was meinem Verständnis für schwere Aufgaben entspricht, die die Browseransicht blockieren würden.

+0

In Chrome maximale Array-Größe ist etwas zwischen 1e9 und 1e10. –

+0

Und Absturz bezieht sich nicht auf die Größe des Arrays, sondern auf die Anzahl der Iterationen. Es würde auch mit einer normalen Schleife abstürzen. –

+0

Warum durchlaufen Sie 100 Millionen Elemente in JS? Verwenden Sie wirklich den besten Ansatz? –

Antwort

-2

fand ich diese Antwort auf eine ähnliche Frage: Maximum size of an Array in Javascript

Die maximale Länge, bis „es träge bekommt“ ist völlig abhängig von Ihrer Zielmaschine und dem tatsächlichen Code, so dass Sie auf testen müssen die (die) Plattform (en) zu sehen, was akzeptabel ist.

Die maximale Länge eines Arrays gemäß der Spezifikation ECMA-262 5th Edition wird jedoch aufgrund der abstrakten ToUint32-Operation durch eine 32-Bit-Ganzzahl ohne Vorzeichen gebunden, sodass das längste mögliche Array 2^32-1 = haben könnte 4,294,967,295 = 4,29 Milliarden Elemente.

Verwandte Themen