Ich arbeite in einer eingebetteten Umgebung, in der Ressourcen ziemlich begrenzt sind. Wir versuchen, node.js zu verwenden, was gut funktioniert, aber normalerweise ungefähr 60 Megabyte virtuellen Speicher verbraucht (der verwendete reale Speicher ist ungefähr 5 Megabyte). Angesichts unserer Beschränkungen ist dies zu viel virtueller Speicher; Wir können es uns nur leisten, dass node.js maximal 30 Megabyte VM verwenden darf.Wie kann die Verwendung von virtuellem Speicher durch node.js begrenzt werden?
Es gibt mehrere Befehlszeilenoptionen für node.js, wie „--max_old_space_size“, „--max_executable_size“ und „--max_new_space_size“, aber nach dem Experimentieren finde ich, dass diese alle Realspeicher steuern Nutzung, nicht maximale Größe des virtuellen Speichers.
Wenn es darauf ankommt, arbeite ich in einer Ubuntu-Linux-Variante auf einer ARM-Architektur.
Gibt es eine Option oder Einstellung, die es einem ermöglicht, die maximale Menge an virtuellem Speicher festzulegen, die ein Prozess node.js verwenden darf?
Warum sollte das ein Problem sein? Linux verwendet eine Überbelegung: Dieser virtuelle Speicher existiert nur als Einträge in der Prozess-Seitentabelle, bis er * tatsächlich * verwendet wird. –
Hm. Ich bin mir nicht sicher. Dies ist eine eingebettete Umgebung (dh: kein Speicherplatz). Würden also nicht alle virtuellen Zuweisungen etwas echten Speicher verbrauchen? Ich werde diesen Gedanken meinem Chef zeigen, aber ich habe das Gefühl, dass es keinen Unterschied machen wird; Ich wurde angewiesen, den Fußabdruck zu reduzieren, und zu argumentieren, dass ich nicht müsste, wird nicht viel Gewicht tragen. Der "Kunde hat immer Recht". Außerdem bin ich auf ein anderes Problem gestoßen. Ich schrieb eine Funktion mit setrlimit(), um die Nutzung des virtuellen Speichers auf weniger als 55 MB zu beschränken, und jetzt wird node.js mit einem malloc-Fehler beendet. Irgendwelche Vorschläge? – Mike
Hallo Mike. Wie hast du das gelöst? – Industrial