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
es auf 64bit ubuntu Prüfung, und jetzt heapTotal bleibt etwa 260 - 280 MB, fragen, wo kommen diese Zahlen? – Herokiller
@Herokiller welche Zahlen? – Esailija
heapTotal für Ihr 2. Beispiel ist etwa 280MB für den gleichen Test, der 1,4GB vor – Herokiller