J'ai le script suivant (j'utilise aussi raphaeljs) qui dessine un cercle, attend 1 seconde, dessine un cercle, etc (vous pouvez copier le coller - est fonctionnel, seulement besoin d'inclure raphael de raphaeljs.com):firefox fuite de mémoire
<div id="holder">
</div>
<script src="raphael.js" type="text/javascript"></script>
<script>
var paper = Raphael(10, 50, 320, 200);
var rad = Math.PI/180;
var finAngle = 0;
function sector(cx, cy, r, startAngle, endAngle, params) {
var x1 = cx + r * Math.cos(-startAngle * rad),
x2 = cx + r * Math.cos(-endAngle * rad),
y1 = cy + r * Math.sin(-startAngle * rad),
y2 = cy + r * Math.sin(-endAngle * rad);
return ["M", cx, cy, "L", x1, y1, "A", r, r, 0, +(endAngle - startAngle > 180), 0, x2, y2];
}
var path = sector(100,100,50,0,180);
var arc = paper.path(path);
function draw()
{
path = sector(100,100,50,0,finAngle);
arc.attr({"path": path});
finAngle += 1;
/*
if (finAngle == 360)
finAngle = 359;
*/
if (finAngle > 360)
{
clearInterval(interval);
setTimeout("setNewInterval();", 1000);
finAngle = 1;
}
return;
}
function setNewInterval()
{
interval = setInterval("draw();", 3);
}
var interval = setInterval("draw();", 3);
</script>
Le problème est qu'il semble générer une fuite de mémoire sur Firefox (je laisse tourner pendant 10 min et comme Firfox obtenu à 700 Mo de RAM (chrome est resté à 25MB)). Chrome n'a aucun problème avec cela.
Des idées pour résoudre ce problème?
le signaler bug Firefox – lanzz
fait ... mais cela ne résout pas vraiment mon problème :). Je cherche à modifier le script mais ... je ne sais pas vraiment comment puisque je ne vois pas de problèmes là-bas. – zozo
Quelle version de Firefox? Avez-vous essayé avec Firefox Nightly? Avez-vous le même problème? Vous pouvez également utiliser 'about: memory' pour mieux tracer l'endroit où se produit cette incrémentation de mémoire, et essayer de forcer le GC et de minimiser l'utilisation de la mémoire. Même si ce n'est probablement pas pertinent, je vous suggère de passer la fonction ref à 'setInterval' /' setTimeout', pas une chaîne, par exemple: 'setInterval (draw, 3)'. Prenez également en compte le fait qu'il y a une chance que ce soit un bug de navigateur ou un bug de la bibliothèque, donc votre code ne peut pas faire grand-chose. – ZER0