2012-10-19 3 views
-4

i créer un objet de classe A. à cette java de temps pour la classe occupe la mémoire A. mais quand j'attribuer nulle dans l'objet de la classe A, alors il peut libérer de la mémoire de cet objetcomment libérer de la mémoire en java

class A{ 
    public long num = 28115733; 

} 
+5

Quelle est votre question? – SLaks

+1

Merde tout le monde sait que;) Vous pouvez lire un bel article http://www.artima.com/insidejvm/ed2/gcP.html –

Répondre

2

Vous ne pouvez pas être sûr de cela. Lorsque vous affectez null à un object reference, le object pointé par cette référence est eligible pour Garbage Collection.

Mais il est complètement jusqu'à la JVM quand il releases le memory occupé par ce object.

Peut être quand JVM voit que le memory est faible, il peut kick off la garbage collector pour libérer de la mémoire. Mais c'est complètement un processus de fond. Vous n'avez pas à vous en préoccuper. En outre, si vous souhaitez explicitement dire au JVM de se souvenir de la mémoire, vous pouvez ajouter un appel à System.gc(). Mais encore une fois, JVM ne démarre pas immédiatement le processus Garbage Collection. Ce serait sur JVM seulement.

6

Si vous attribuez une référence à l'objet de classe A à null, l'objet A est éligible pour GC (il peut ne pas libérer immédiatement la mémoire).

Lorsque la mémoire sera libérée, utilisez les algorithmes JVM et garbage collector (GC) utilisés.

0

quand j'affecter null dans l'objet de la classe A, alors il peut libérer de la mémoire de cet objet

Oui, il peut, mais il ne sera pas la mémoire libre jusqu'à ce qu'il doit.

0

La mémoire dans Java est récupérée par le garbage collector (un processus qui recherche les objets inaccessibles et renvoie leur mémoire pour utilisation) Vous n'avez pas besoin de définir explicitement un objet à null pour que cela se produise.

Questions connexes