2011-09-13 7 views
5

Duplicar posible:
Unloading classes in java?¿Cuándo entra en una clase descargar de la memoria heap

Cuando hace una descarga de clase de la memoria?

Para cargar una clase podemos llamar al Class.forName("NameOfClass"); o cuando creamos un objeto de una clase, luego la clase se carga en la memoria.

+0

estaba a punto para responder, pero el primer enlace en google fue esta pregunta en SO: [¿Descargando clases en java?] (http://stackoverflow.com/questions/148681/unloading-classes-in-java) –

+0

¿Por qué lo necesitas? Por cierto, eso depende de la JVM y puede que no se haga en absoluto (ver el infame problema de PermGen) – Thomas

Respuesta

1

En palabras sencillas:

Clase se descarga cuando se quitan todas las referencias a la clase (y sus instancias) y el cargador de clases utilizada es basura recogida.

+0

No, podría ser elegible para la recolección de basura, pero en algunos casos la clase podría no recopilarse. – Thomas

+0

No es correcto. Una clase se descargará (puede) solo si su cargador de clases obtiene la basura recolectada. Estás respondiendo * objetos/instancias *. –

+0

De acuerdo, las referencias a la clase y al cargador de clases deberían eliminarse. – Muse

2

Clases

clases serán cargadas por un cargador de clasesy serán (pueden) ser descargados cuando ese cargador de clases es basura recogida. En normal aplicaciones, donde no nos importan los cargadores de clases: las clases nunca se descargarán.

Las instancias de clases/objetos

objetos se crearán en el montón y eliminan cuando el recolector de basura detecta que no hay ninguna referencia a esa instancia/objeto más.

(Sólo en definitiva, mejores detalles: véase la pregunta Unloading classes in Java?)

+1

¿Las clases de Java proporcionadas por JDK (por ejemplo, 'java.util.ArrayList' y' java.math.BigIntege'r) se descargan? – Pacerier

0

Cuando exactamente una clase será descargado no está definida, exactamente igual que cuando un objeto puede ser el recolector de basura no está definido. Lo se definido es cuando puede ser descargada:

una clase o interfaz puede ser descargado si y sólo si su clase que define cargador puede ser reclamado por el recolector de basura

Cuestiones relacionadas