【问题标题】:HTML5 canvas application (javascript) - how to detect a memory leak?HTML5 画布应用程序 (javascript) - 如何检测内存泄漏?
【发布时间】:2010-11-05 09:24:47
【问题描述】:

我遇到了一个奇怪的问题 - 应用程序在运行时迅速变慢。唯一想到的是内存泄漏,但是如何在 javascript 中检测到它呢?有什么工具吗? 无论如何,这是代码:

function draw_ship(){
    //Body
    var sbpaint = ctx.createLinearGradient(shipx+20,shipy,shipx+20,shipy+15);//painting the ship
    sbpaint.addColorStop(0,'rgb(220,220,230)');
    sbpaint.addColorStop(1,'rgb(150,150,160)');
    ctx.fillStyle = sbpaint;
    ctx.moveTo(shipx,shipy);
    ctx.lineTo(shipx+40,shipy);
    ctx.lineTo(shipx+55,shipy+15);
    ctx.lineTo(shipx-15,shipy+15);

    ctx.fill();
    //Head
    var shpaint = ctx.createLinearGradient(shipx+20,shipy,shipx+20,shipy-20);
    shpaint.addColorStop(0,'rgb(200,200,210)');
    shpaint.addColorStop(1,'rgb(100,100,110)');
    ctx.fillStyle = shpaint;
    ctx.arc(shipx+20,shipy,20,Math.PI,Math.PI*2,false);
    ctx.fill();
}

如您所见,它非常简单,我真的很困惑,泄漏可能在哪里。 应用程序本身在这里: link,从菜单中选择“滚动条”。

感谢您的宝贵时间。

【问题讨论】:

  • 内存泄漏通常不会减慢已完成的应用程序。为此,您必须有 massiv 泄漏。例如,如果您使用了必须分页的内存量。
  • 我觉得不错,什么浏览器?
  • 在 FF 3.6 和 Chromium 中测试
  • 这可能是代码中其他地方的问题、递归缓慢、循环后无法关闭路径等。您可以使用像 Safari 或 Chrome 中内置的分析器来跟踪它。

标签: javascript web-applications html canvas


【解决方案1】:

问题被证明是微不足道的,因为它很烦人 - 在使用 lineTo 绘制表单之前缺少 .beginPath() 方法。 感谢所有评论的人。

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 1970-01-01
    • 2020-02-14
    • 2012-08-22
    • 2018-01-17
    • 2011-10-09
    • 2014-08-18
    • 1970-01-01
    • 2013-04-16
    相关资源
    最近更新 更多