2010-03-31 4 views
0

je rencontre juste un problème étrange:AS3: pourquoi cela se passe-t-il?

var a:ClassA = new ClassA; 
var b:ClassA = a; 

Le programme continue de fonctionner quelque temps, a = null, b = null.

Le programme est complexe, je suis sûr qu'aucune partie ne touchera a, et b. Ma question est, est-ce que le runtime (garbage collector) va collecter la mémoire de "a" et assigner ensuite a et b à null?

Je suis confus, merci!

Répondre

1

Le garbage collector récupèrera la mémoire que cette instance de ClassA occupe, seulement une fois qu'il n'y a plus de référence. Tant que a ou b fait référence à cet emplacement de mémoire, l'instance restera. Si ce sont des variables locales, l'instance sera récupérée par le GC après la sortie de la fonction/méthode. Si ce sont des variables d'instance, elles resteront jusqu'à ce que l'instance de la classe de définition soit collectée.

0

essayer

var a:ClassA = new ClassA(); 
var b:ClassA = a; 

Le() à la fin du nom de la classe appelle le constructeur de sorte que vous avez réellement votre ClassA.

+0

Merci pour la réponse, mais ce n'est pas la bonne réponse ... –

Questions connexes