Une Bévue a écrit :
Une Bévue <unbewusst.sein@weltanschauung.com.invalid> wrote:
a=null;
bon, ça, ça ne suffit pas.
Ben je croyais qu'une fonction quand elle avait fini son boulot libérait la mémoire ?
(tant qu'on n'attaque pas des variables globales ...)
au pire, à mon idée, tu restes avec la dernière restauration(*), non ?
Est-ce grave ?
(*) et encore ? pas certain puisque "return this"
Ne suffit-il pas de se pencher sur le principe-problème des "closures" ?
<
http://blogs.developpeur.org/cyril/archive/2007/10/16/prototype-closure-optimisation-creation-classe-javascript.aspx>
(qui sont un sujet de fuite de mémoire avec IE)
<
http://laurens.vd.oever.nl/weblog/items2005/closures/>
où on a une indication du moment où il faut faire : a = null;
ça n'a pas d'effet (avec FF3) sur a.
en fait, mon code lit une séquence de caractères (du genre "F+[-F...]"
à l'ouverture d'un "[" le parent cré un enfant qui se termine par "]"
l'enfant lit la même séquence, arrivé à la première fermeture (ie "]")
il est devenu inutile et même doit-être détruit, depuis le parent auquel
il retourne la main.
pour l'instant, ce qui marche le mieux, mais ne me semble pas très
élégant, et d'avancer l'enfant, depuis le parent, au bout de la chaine
de caractères.
mon code est à la page
<http://thoraval.yvon.free.fr/Canvas/l_system.xhtml>
à partir de la ligne 126, j'ai :
case ']':
this.parent.restore(this);// <= le parent "reprend la main"
this.index=this.rule.length-1;//index en bout de chaine
break;
et le #restore(object) est à partir de la ligne 71 :
this.restore=function(child){
this.index=child.index+1;
child = null; // ???
this.penUp();
ctx.moveTo(this.x,this.y);
this.penDown();
this.actRule(this.rule);
return this;
};
object = null; // ???
--
sm