【问题标题】:KineticJS high memory consumption when removing and adding layers删除和添加层时 KineticJS 的高内存消耗
【发布时间】:2013-04-30 11:59:05
【问题描述】:

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

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

此应用程序使用大量内存,如果我重新运行回放,内存消耗会不断增加(高达 8 GB)。我曾尝试在 Google Chrome(第 27 版)中使用 Profiler,但似乎内存中存在层的堆积,尽管我一直在 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(),他们不会从内存中删除层吗?还是我需要以完全不同的方式处理这个问题?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 2017-10-30
      • 1970-01-01
      • 2021-01-10
      相关资源
      最近更新 更多