2011-06-30 5 views
0

En Java ce qui suit est le cycle de vie d'un objetQuestion sur le cycle de vie d'un objet

Created 
In use (strongly reachable) 
Invisible 
Unreachable 
Collected 
Finalized 
Deallocated 

Ma question est, d'où vient la collecte des ordures correspondent ici? Quand est-ce qu'on dit qu'un objet est "garbage collect"? Est-ce après la dernière étape du cycle? Précisez s'il vous plaît.

Répondre

3

Je veux peu prolonger la réponse donnée par JB Nizet:

Un objet entre dans un état inaccessible en l'absence de références plus fortes à exister. Lorsqu'un objet est inaccessible, il est candidat à la collecte.

Un objet est dans l'état collecté lorsque le garbage collector a reconnu un objet inaccessible et le prépare pour le traitement final en tant que précurseur de l'allocation. Si l'objet a une méthode finalize, il est marqué pour la finalisation.

Un objet est à l'état final s'il n'est toujours pas accessible après l'exécution de sa méthode de finalisation, le cas échéant. Un objet finalisé attend une désallocation.

L'état désalloué est l'étape finale de la récupération de place. Si un objet est encore inaccessible après que tout le travail ci-dessus a eu lieu, alors il est candidat à la désallocation.

Regardez here pour plus d'informations.

+0

+1: très bonne explication –

3

Je dirais que le garbage collection commence lorsque l'objet passe de Inaccessible à Collected, et s'arrête lorsque l'objet est désalloué. Normalement, vous ne devez pas se soucier beaucoup, sauf si vous utilisez finaliseurs, que vous ne devriez pas dans 99,999% des cas.

+0

oui je suis d'accord avec vous, Garbage Collector entrera en jeu lorsque l'objet devient inaccessible –