Ciclo
un programa Java Vida objeto crea muchos objetos de diferentes clases. Objeto en Java, interactuar mediante el envío de mensajes entre sí. Después de que terminen de procesar, estos objetos son recolectados. Después del proceso de recolección de basura, el sistema operativo reclama los recursos asignados a estos objetos que serán utilizados posteriormente por nuevos objetos.
A continuación se presentan las fases en el que un objeto Java atraviesa a cabo su ciclo de vida:
1. Clase Cargando
Antes de crear objeto de una clase, la clase debe ser cargado en la memoria del disco. El cargador de clases java carga el archivo de clase a la memoria.
¿Cuándo se carga la clase?
inicializadores estáticos
Java busca cualquier inicializadores estáticos e inicializa los campos estáticos que son parte de la clase y no parte de una instancia específica de la clase (objeto).
3. creación de objetos de
objeto es una instancia de la clase. Se crea en las siguientes situaciones:
Declaración: cuando declara un objeto, p. ClassA objA; Instanciación: cuando se usa nuevo para asignar un nuevo objeto en la memoria del montón, p. Ej. nueva clase A(); Inicialización: el objeto nuevo se construye, p. Clase A(); 4. Uso del objeto
En esta etapa, los programas podrían usar el objeto ya sea accediendo a los campos o a los métodos de llamada.
5. Limpieza de
Ésta es la última fase de la objetos Java en el que se reciclan y la memoria es reclamada por el sistema operativo.
¿Qué sucede en la destrucción?
El objeto se elimina de la memoria. Java descarta sus referencias internas a este objeto. Garbage Collection (GC), ejecuciones que liberan objetos que ya no se necesitan, es decir, no hay referencias a este objeto. Finalización: GC brinda a los objetos una oportunidad de última oportunidad para limpiar cualquier otro recurso llamando a su método finalize().
cuando sucede?
cuando el objeto queda fuera del alcance. es decir {... objA ...}, aquí} se convierte en ámbito. en este momento, el tiempo de ejecución de Java verifica las referencias y permite a GC reciclar este objeto. cuando el número de referencias a este objeto en la memoria de tiempo de ejecución java se vuelve cero (0). cuando el objeto se establece explícitamente en nulo, es decir, objA = null ;, se llama GC se llama explícitamente el método finalize().
@duffymo: ¿Esto no depende de si la referencia del nuevo objeto creado existe después del retorno de la función? E.g. un objeto almacenado en una colección que está en el alcance de la persona que llama. – Cratylus
@user: en ese caso, el alcance del objeto ha cambiado y GC no puede afectarlo. – Jeremy
"Objetos creados dentro del alcance del método ..." para mí significa que no fue transferido por el usuario. Tiene razón acerca de una cosa: si el objeto creado en el alcance se devuelve como el valor de retorno, entonces la persona que llama puede retener la referencia y evitar que se gc'd. Enmendaré mi respuesta. – duffymo