Bonjour,

Une question me pr�occupe en ce moment, je me demande si le garbage collector en JavaScript est robuste (surtout que cela d�pend des navigateurs...)

Mon exemple est le suivant : une fonction est appel�e tr�s fr�quemment (plusieurs dizaines de fois par seconde). Cette fonction instancie une variable locale � chaque ex�cution (cf. code technique #1). � la sortie de cette fonction, la m�moire de la variable locale est th�oriquement lib�r�e. Le m�canisme de garbage collector est-il fiable � ce niveau ? Ou est-il pr�f�rable d'utiliser une instance unique de la variable, qui se situera dans le scope imm�diatement sup�rieur ? (cf. code technique #2)

Je ne sais pas si ma question est claire, voire m�me pertinente... j'esp�re que l'exemple de code suivant sera plus parlant :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
// - l'event "mousemove" est déclenché des dizaines (centaines ?) de fois par seconde
// - "maVariable" est utilisé uniquement dans la fonction déclenchée par le mousemove
// - les 2 techniques sont équivalentes en terme de vitesse d'exécution
 
// technique 1 : la variable est réinstanciée à chaque fois
// avantages : variable locale en accès direct, meilleure encapsulation
// inconvénient (a priori) : la mémoire est-elle toujours bien nettoyée ?
$(document).ready(function () {
	$('#monElement').mousemove(function (e) {
		var maVariable = uneFonction();
		// (...)
	});
});
 
// technique 2 : une seule instance de la variable
// avantage (a priori) : gestion mémoire plus sûre ?
// inconvénients : accès indirect à la variable, mauvaise encapsulation
$(document).ready(function () {
	var maVariable;
	$('#monElement').mousemove(function (e) {
		maVariable = uneFonction();
		// (...)
	});
});
j'attends vos avis