/ / KineticJS hoher Speicherverbrauch beim Entfernen und Hinzufügen von Ebenen - Leistung, Canvas, HTML5-Canvas, KineticJs, Speicherverbrauch

KineticJS hoher Speicherverbrauch beim Entfernen und Hinzufügen von Ebenen - Performance, Canvas, HTML5-Canvas, kineticjs, Speicherverbrauch

Ich baue eine Anwendung, wo ich willWiederholen Sie die Bewegung mehrerer Benutzer (bis zu 20). Jeder Benutzer hat eine Liste von X- und Y-Positionen (zwischen 20 und 400 Positionen). Eine Wiederholung dauert von 1-10 Minuten.

Die Wiederholung wird mit 8 FPS gezeichnet, was alles ist, was ich brauche. Bei jedem Frame lösche ich die Ebene, die die Bewegung des Benutzers zeigt, und zeichne alles bis zum nächsten Zeitpunkt neu.

Diese Anwendung verwendet viel Speicher, und wenn iWenn Sie eine Wiederholung erneut ausführen, steigt der Speicherverbrauch ständig an (bis zu 8 GB). Ich habe versucht, den Profiler in Google Chrome (Version 27) zu verwenden, und es scheint, dass sich im Speicher Schichten aufbauen, obwohl ich ständig remove() die alten Schichten.

Der folgende Code zeigt ein kurzes Modell der Funktionsweise der Anwendung.

function draw()
{
stage.removeChildren();

var userLayer = new Kinetic.Layer();

/*
iterate all data and create lines to signify the movement of a user,
and add it to userLayer
*/

stage.add(userLayer);
}

setInterval(draw, 125); // 8 FPS

Meine Frage ist, stage.removeChildren() und auch Kinetic.Layer().remove()Entfernen sie die Schicht nicht aus dem Speicher? Oder muss ich damit ganz anders umgehen?

Antworten:

1 für die Antwort № 1

Ja. "Entfernen" wird aus dem übergeordneten Container entfernt. Aber das Objekt existiert immer noch. Sie müssen stattdessen "zerstören" verwenden.