2009-02-12 9 views
0

Comment libérer de la mémoire et de détruire Array, est-il autorisé à faire comme çadétruire array()

myarr = null 
    myarr = new Array 

est tout l'ancien contenu de myarr maintenant libéré de la mémoire?

Répondre

1

En supposant que vous n'ayez pas une autre référence au tableau dans une autre variable, la mémoire des tableaux sera récupérée lorsque le GC l'atteindra.

-1

myarr = rien

Garbage Collection en .Net trierait cela de toute façon. Thats si votre dans .NET.

+0

il utilise Flex .. (GC ainsi) –

1

S'il n'y a plus de références à cet objet Array, il est collecté par le système Garbage Collection (GC). Donc, quand vous demandez "est tout le vieux contenu de myarr maintenant libéré de la mémoire?", La réponse est qu'il pourrait être. Mais vous n'avez aucun contrôle sur le moment où le CPG s'exécute en utilisant la machine virtuelle Actionscript.

Donc, il est vrai de dire, quand il n'y a plus de références à un objet, la prochaine fois que le garbage collector sera exécuté, il sera collecté.

Également les choses deviennent plus complexes lorsque vous traitez avec un tableau. L'objet Array peut être collecté, mais cela ne signifie pas que les objets référencés par Array seront également nettoyés. Les objets que les références de tableau peuvent être l'une des nombreuses références à ces objets, par exemple peut-être une copie de ce tableau existe dans votre système, ce qui signifie qu'au moins deux références existent pour chaque objet dans chaque tableau.

Il faut aussi savoir que les auditeurs d'événements cessent d'être des objets ramasse-miettes, à moins qu'ils ne sont faibles écouteurs d'événements