移除和添加图层时,KineticJS的内存消耗很高

时间:2013-05-06 17:10:06

标签: performance canvas html5-canvas kineticjs memory-consumption

我正在构建一个应用程序,我想重播几个用户的移动(最多20个)。 每个用户都有一个X,Y位置列表(范围从20到400个位置)。重播时间为1-10分钟。

重播是以8 FPS绘制的,这就是我所需要的。在每一帧中,我删除显示用户移动的图层,并将所有内容重新绘制到下一个时间点。

此应用程序使用大量内存,如果我重新运行重放,内存消耗会不断增加(最多8 gb)。我曾尝试在Google Chrome浏览器中使用Profiler(版本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(),他们不会从内存中删除图层吗?或者我需要以完全不同的方式处理这个问题吗?

1 个答案:

答案 0 :(得分:1)

是。 “删除”正从父容器中删除。但对象仍然存在。你必须使用“破坏”。