/ / Wysokie zużycie pamięci KineticJS podczas usuwania i dodawania warstw - wydajność, canvas, html5-canvas, kineticjs, zużycie pamięci

Duże zużycie pamięci KineticJS podczas usuwania i dodawania warstw - wydajność, płótno, płótno html5, kineticjs, zużycie pamięci

Tworzę aplikację tam, gdzie chcęodtworzyć ruch kilku użytkowników (do 20). Każdy użytkownik ma listę pozycji X, Y (od 20 do 400 pozycji). Powtórka trwa od 1 do 10 minut.

Powtórka odbywa się przy 8 FPS, co jest wszystkim, czego potrzebuję. W każdej klatce usuwam warstwę pokazującą ruch użytkownika i przerysowuję wszystko do następnego momentu.

Ta aplikacja zużywa dużo pamięci, a jeśli japonownie uruchom powtórkę, zużycie pamięci stale rośnie (do 8 GB). Próbowałem użyć Profilera w Google Chrome (wersja 27) i wydaje się, że w pamięci jest nagromadzenie warstw, mimo że ciągle remove() stare warstwy.

Poniższy kod pokazuje szybki przykład działania aplikacji.

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

Moje pytanie brzmi, stage.removeChildren() i również Kinetic.Layer().remove(), czy nie usuwają warstwy z pamięci? Czy też muszę sobie z tym poradzić w zupełnie inny sposób?

Odpowiedzi:

1 dla odpowiedzi № 1

Tak. „Usuń” usuwa z kontenera nadrzędnego. Ale obiekt wciąż istnieje. Zamiast tego musisz użyć „zniszcz”.