2012-03-09 10 views
5

Cuando ya no se hace referencia a una matriz de objetos, ¿los objetos de esa matriz también son basura? (Suponiendo que no hay variables que hacen referencia a los elementos)En Java, ¿cómo se recoge una matriz de objetos basura?

En esta página, http://java.sys-con.com/node/37613 que dice - "El mayor peligro es colocar un objeto en una colección y olvidar para quitarla La memoria utilizada por dicho objeto nunca será reclamado. "

Si se asegura de anular las referencias, ¿por qué no se reclamará esa memoria?

Gracias

+0

Porque si no anulas las referencias, no se recuperarán. –

Respuesta

4

Cuando una matriz de objetos no se hace referencia más, hace los objetos en esa matriz se recogen basura también? (suponiendo que las variables no son haciendo referencia a los elementos)

Sí.

"El mayor peligro es colocar un objeto en una colección y olvidar para quitarla. La memoria utilizada por objeto que nunca se recuperó ."

Esto es cuando se son la celebración de una referencia a la colección. Por ejemplo, si tiene un Map en el que coloca una clave-valor y luego olvida eliminarlo, se queda allí para siempre. Piensa en sesiones http, si usas algo en ServerContext o algo así al inicio de la solicitud usando ID de sesión como clave pero no lo borras al final del proceso de solicitud ...

2

Para la primera pregunta, la respuesta es sí, absolutamente : los objetos dentro de la matriz no referenciada y ninguna otra referencia obtiene la recolección de basura.

En cuanto a la segunda cuestión, el documento habla de la colocación de olvidar un objeto dentro de una colección referencia, por ejemplo, una memoria caché de algún tipo, un campo estático, una tienda local de subprocesos, etc.

1

Se no será reclamado si nada lo hace referencia. El artículo dice que si anula una referencia, pero el objeto aún está en una colección referenciada (de ahí que se haga referencia), no se recopilará.

1

En general, todo lo que no se referencia es basura recolectada. Entonces, sí, esos objetos serían basura recolectada.

Además, tenga en cuenta que:

  1. Una matriz no es una colección.
  2. creo que lo que la persona que escribió que quería decir era asegurarse de que recordar todos los lugares a los que está haciendo referencia a un objeto, de modo que si tiene la intención de eliminarlo, se consigue quitado (y ya no hay persistente referencias a él).
Cuestiones relacionadas