Я создаю приложение, в котором хочу воспроизвести движение нескольких пользователей (до 20). У каждого пользователя есть список позиций X,Y (от 20 до 400 позиций). Повтор колеблется от 1 до 10 минут.
Повтор отрисовывается со скоростью 8 кадров в секунду, и это все, что мне нужно. В каждом кадре я удаляю слой, показывающий движение пользователя, и перерисовываю все до следующего момента времени.
Это приложение использует много памяти, и если я повторно запускаю повтор, потребление памяти продолжает увеличиваться (до 8 ГБ). Я попытался использовать Profiler в Google Chrome (версия 27), и кажется, что в памяти есть накопление слоев, хотя я постоянно remove()
старые слои.
В следующем коде показан быстрый макет того, что делает приложение.
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
У меня вопрос, stage.removeChildren()
а также Kinetic.Layer().remove()
они слой из памяти не удаляют? Или мне нужно обрабатывать это совершенно по-другому?