2015-05-15 6 views

Antwort

17

Sie müssen die maximale Speichergröße Flags (alle Größen werden in MB) gesteuert werden.

Die recommended amounts for a "low memory device" are:

node --max-executable-size=96 --max-old-space-size=128 --max-semi-space-size=1 app.js 

für 32-Bit- und/oder Android und

node --max-executable-size=192 --max-old-space-size=256 --max-semi-space-size=2 app.js 

für 64-Bit-Nicht-Android.

Diese würden die Heap-Summen auf 225mb bzw. 450mb begrenzen. Es enthält keine Speicherauslastung außerhalb von JS. Zum Beispiel werden Puffer als "c-Speicher" zugewiesen, nicht im JavaScript-Heapspeicher.

Auch sollten Sie wissen, dass je näher Sie dem Heap-Limit sind, desto mehr Zeit wird in GC verschwendet. Z.B. Bei einer Speicherbelegung von 95% würden 90% der CPU für GC und 10% für den eigentlichen Code verwendet (nicht reelle Zahlen, sondern die allgemeine Idee). Sie sollten also so großzügig wie möglich mit den Grenzwerten umgehen und niemals 16% der maximalen Speicherbelegung überschreiten (I.E. heapUsed/limit sollte nicht größer sein als 0.16). 16% ist etwas, woran ich mich aus etwas Papier erinnere, es ist vielleicht nicht optimal.

Flags:

  • --max-executable-size die maximale Größe des Heap für ausführbaren Code (das native Code Ergebnis von kompilierten JavaScript just-in-time) reserviert.
  • --max-old-space-size die maximale Größe des Heap für langfristig reserviert Objekte
  • --max-semi-space-size die maximale Größe des Heap für kurzfristig reserviert Objekte
+0

es auf 64bit ubuntu Prüfung, und jetzt heapTotal bleibt etwa 260 - 280 MB, fragen, wo kommen diese Zahlen? – Herokiller

+0

@Herokiller welche Zahlen? – Esailija

+0

heapTotal für Ihr 2. Beispiel ist etwa 280MB für den gleichen Test, der 1,4GB vor – Herokiller