2010-10-31 6 views
1

J'ai rencontré un problème étrange - l'application ralentit rapidement à mesure qu'elle fonctionne. La seule chose qui vient à l'esprit est une fuite de mémoire, mais comment le détecter en javascript? Y a-t-il des outils? Quoi qu'il en soit, voici le code:Application de canevas HTML5 (javascript) - comment détecter une fuite de mémoire?

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(); 
} 

Comme vous le voyez, il est très simple, et je suis vraiment perplexe, où la fuite pourrait être. Application elle-même est ici: link, choisissez «Scroller» dans le menu.

Nous vous remercions de votre temps.

+1

Les fuites de mémoire ne ralentissent généralement pas les applications. Vous devriez avoir une fuite * massiv * pour cela. Par exemple, si vous utilisez autant de mémoire qu'il doit être paginé. –

+1

Ça me semble bien, quel navigateur? – MooGoo

+0

Ça me va aussi –

Répondre

0

Problème prouvé être aussi trivial que c'était ennuyeux - manque de .beginPath() méthode appliquée avant de dessiner des formes avec lineTo. Merci à tous ceux qui ont commenté.