THE ORB
Studio wird gestartet

FATAL ERROR: JavaScript-Heap-Speicher erschöpft

Ein Script hat den ganzen verfügbaren Speicher verbraucht und den Server mitgerissen. Etwas wird behalten und nie freigegeben.

groupsDer ganze Server stürzt abcodeBraucht einen Entwickler

Mach das zuerst

Notier, welche Resource es war und wie lange der Server schon lief. Das hier muss richtig gesucht werden.

bug_reportFüg lieber deine ganze Konsole ein

Was es bedeutet

Eine Node-Resource hat mehr Speicher verbraucht, als V8 erlaubt, und die Runtime hat abgebrochen. In FXServer kann das den ganzen Server mitreißen, weil die JavaScript-Runtime im selben Prozess läuft.

Was es auslöst

Sortiert danach, wie oft es die Antwort ist.

  1. 1

    Ein Leck: etwas, das sich anhäuft und nie geleert wird

    Der Klassiker ist ein Objekt pro Spieler, das beim Beitritt angelegt und beim Verlassen nie entfernt wird. Eine Stunde sieht alles gut aus, zur Spitze stirbt es.

  2. 2

    Etwas Riesiges in den Speicher laden

    Eine große Datei oder eine ganze Tabelle auf einmal in ein Array lesen.

  3. 3

    Ein Cache ohne Obergrenze

    Eine Map mit einem Schlüssel unbegrenzter Vielfalt, aus der nie etwas entfernt wird.

  4. 4

    Ein Listener, der pro Event statt einmal registriert wird

    Handler, die sich bei jedem Auslösen ansammeln.

  5. 5

    Schlicht zu wenig Speicher für die Last

    Wirklich mehr zu brauchen als den Standard-Heap.

Wie du erkennst, welcher deiner ist

Beobachte den Prozess eine Stunde lang. Speicher, der steigt und zwischen Spielerspitzen nie wieder fällt, ist ein Leck; Speicher, der bei einer bestimmten Aktion hochschnellt, ist diese Aktion.

Wo du nachsehen musst

Was auch immer wächst: jedes push, jedes set und jedes [schlüssel] = auf einem Objekt auf Modulebene in der abgestürzten Resource.

Wie du es behebst

Räum beim Trennen auf und begrenz jeden Cache:

on('playerDropped', (reason) => {
    const src = global.source
    delete playerState[src]        // die Zeile, die man vergisst
})

Den Heap zu vergrößern kauft Zeit, es behebt kein Leck:

# server.cfg — ein Notbehelf, keine Lösung
set node_args "--max-old-space-size=4096"

Hängst du immer noch an deinem eigenen Code?

Diese Seite sagt, was dieser Fehler üblicherweise bedeutet. Füg deine Konsole in Server Fixer ein: es sortiert alles darin und sagt dir, was zuerst dran ist; und wenn du lieber nicht ranwillst, kann ORBIE das Script reparieren und dir die Resource fertig zum Einsetzen zurückgeben.

bug_reportServer Fixer öffnen

Für diese Art Fehler Script Optimizer liest das Script und repariert den Code dahinter.

Fehler, die mit diesem zusammen auftreten