【发布时间】: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