salut les gars,

j'ai beau retourner le problème dans tous les sens, je ne vois pas comment régler le problème
J'utilise la classe Loader pour charger 24 JPEG de 700 a 900Ko et le problème c'est la liberation de la mémoire .... je précise qu'a la fin du Loader je détruit tous les évènements (qui sont en weakReference) et avant de recommencer a charger de nouveau les mêmes images ,je fais un unload() et aussi un removeChild() sur tous les Loader placé sur la scene.

voici le code de test du problème que j'ai mis dans un fichier a part :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
var tbImages:Array = [
"http://lolo_test/aubadegrand/aubade_025.jpg",
"http://lolo_test/aubadegrand/aubade_026.jpg",
"http://lolo_test/aubadegrand/aubade_030.jpg",
"http://lolo_test/aubadegrand/aubade_028.jpg",
"http://lolo_test/aubadegrand/aubade_032.jpg",
"http://lolo_test/aubadegrand/aubade_022.jpg",
"http://lolo_test/aubadegrand/aubade_031.jpg",
"http://lolo_test/aubadegrand/aubade_029.jpg",
"http://lolo_test/aubadegrand/aubade_024.jpg",
"http://lolo_test/aubadegrand/aubade_027.jpg",
"http://lolo_test/aubadegrand/aubade_023.jpg",
"http://lolo_test/aubadegrand/aubade_021.jpg",
"http://lolo_test/aubadegrand/1192600283_mars2008.jpg",
"http://lolo_test/aubadegrand/1192600434_juin2008.jpg",
"http://lolo_test/aubadegrand/1192600478_juillet2008.jpg",
"http://lolo_test/aubadegrand/1192600184_janvier2008.jpg",
"http://lolo_test/aubadegrand/1192600330_avril2008.jpg",
"http://lolo_test/aubadegrand/1192600527_aout2008.jpg",
"http://lolo_test/aubadegrand/1192600676_novembre2008.jpg",
"http://lolo_test/aubadegrand/1192600576_septembre2008.jpg",
"http://lolo_test/aubadegrand/1192600621_octobre2008.jpg",
"http://lolo_test/aubadegrand/1192600719_decembre2008.jpg",
"http://lolo_test/aubadegrand/1192600113_couverture2008.jpg",
"http://lolo_test/aubadegrand/1192600239_fevrier2008.jpg",
"http://lolo_test/aubadegrand/1192600391_mai2008.jpg"
];
 
// rajouter un ID derriere l'URL pour eviter le cache du navigateur
var tbImg:Array = new Array();
for(var a :Number = 0; a < tbImages.length; a++){
	tbImg.push(tbImages[a] + "?x="+Math.round(Math.random()*1000000));
}
 
// Evenement fin de chargement du Loader
function evtChargeReussi(ev:Event){
	ev.target.removeEventListener(Event.COMPLETE, evtChargeReussi, false);
	ev.target.removeEventListener(IOErrorEvent.IO_ERROR, evtChargeErreur, false);
}
function evtChargeErreur(ev:IOErrorEvent){
	ev.target.removeEventListener(Event.COMPLETE, evtChargeReussi, false);
	ev.target.removeEventListener(IOErrorEvent.IO_ERROR, evtChargeErreur, false);
}
 
// Lancement du chargement en masse
btRelancer.addEventListener(MouseEvent.CLICK, relancer, false, 1, true);
function relancer(ev:MouseEvent){
	// effacement des Loader sur la scene
	for (var a:uint = 0; a < this.numChildren; a++) {
		var objet:* = this.getChildAt(a);
		if(  objet is Loader ){
			objet.unload();
			this.removeChildAt(a);
		}
	}
	var ecart:Number = 20;
	var posEcart:Number = 20;
	for (a = 0; a < this.tbImg.length; a++) {
		var charg:Loader = new Loader();
		charg.contentLoaderInfo.addEventListener(Event.COMPLETE, evtChargeReussi, false, 1, true);
		charg.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, evtChargeErreur, false, 1, true);
		charg.load(new URLRequest(this.tbImg[a]));
		charg.x = posEcart;
		charg.y = posEcart;
		this.addChild(charg);
		posEcart += ecart;
	}
}
 
// affichage de l'utilisation mémoire
this.addEventListener(Event.ENTER_FRAME, boucle);
function boucle(ev:Event){
	txMem.text = (Math.round(System.totalMemory/1024/1024*100)/100) +" Mo";
}

1-déja est ce que vous voyez une erreur dans le code qui empêcherait la libération de la mémoire ?

2-sinon, comment vous faites pour régler ou contourner ce problème ?


merci