Node.js Heap-Speicherlimit für einzelnes Objekt

8

Hat v8 Beschränkungen für die Heapzuweisungen für einzelne Objekte?

a = new Array(1024*1024*102)

schlägt in der Befehlszeile des Knotens mit

fehl

FATAL ERROR: JS Allocation failed - process out of memory

Auch dies schlägt mit demselben Fehler fehl, wenn es als Skript ausgeführt wird

node --expose-gc --nouse-idle-notification --max-old-space-size=8192

FATAL ERROR: CALL_AND_RETRY_0 Allocation failed - process out of memory

%Vor%

Letzte Ausgabe:

{ rss: 1009557504, heapTotal: 993408824, heapUsed: 964980592 }

Allerdings

%Vor%

ist in Ordnung

{ rss: 5466140672, heapTotal: 1091224368, heapUsed: 1070460592 }

Bearbeiten:

node -v

v0.10.25

uname -a

Linux 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Bearbeiten 2: Auch das funktioniert! Es scheint, dass das Limit von v8 für die Anzahl der Eigenschaften gilt, die ein Objekt haben kann?

%Vor%

{ rss: 2474512384, heapTotal: 2466405768, heapUsed: 2431583008 }

Auch das habe ich gefunden: Ссылка

Ich frage mich, ob es relevant ist.

    
ixaxaar 10.08.2014, 18:38
quelle

1 Antwort

2

Es stellt sich heraus, dass der maximalen Größe von Strings, Objekten und Arrays harte Grenzen gesetzt sind. Die Limetten sind ein Überbleibsel des alten Müllsammlers. Hier ist das relevante Ticket:

Ссылка

    
ixaxaar 22.08.2014, 08:36
quelle