2011-05-31 11 views
6

Java efectivo: Elemento 6: elimine las referencias de objetos obsoletos.clases que administran la memoria propia

En términos generales, cada vez que una clase gestiona su propia memoria, el programador debe estar alerta a las pérdidas de memoria. Cada vez que se libera un elemento, cualquier referencia de objeto contenida en el elemento debe anularse.

No creo haber entendido completamente la descripción.

¿Cuáles son los ejemplos de una clase que maneja su propia memoria? Puedo pensar en una matriz, una lista, tal vez un mapa.

¿Alguien podría explicar el artículo con más detalles en el libro? Gracias

+1

Creo que solo tiene que leer toda la sección. Se explica muy claramente. Simplemente sacar ese párrafo fuera de contexto es bastante engañoso. – EJP

+1

@EJP He leído la sección. Entendí lo que estaba mal en el ejemplo dado. Sin embargo, no puedo visualizar muchas situaciones similares. Así que supongo que no lo entendí completamente. – Atul

+2

No hay muchas situaciones similares. Stack y ArrayList son dos de ellos. – EJP

Respuesta

4

Un ejemplo simple es ArrayList, donde, cuando se elimina un elemento del final de la lista, tiene que anular el elemento de matriz, no simplemente disminuir el índice de "último elemento". De lo contrario, el objeto eliminado sigue siendo alcanzable por el ArrayList.

+0

Sí. Las listas, la matriz y, posiblemente, los mapas pueden ser tales casos. Gracias por la respuesta. Lo aceptaré como correcto si no recibo una respuesta mejor hasta mañana. – Atul

1

Tal vez se trate de programar sus propias clases, así como la otra respuesta. Entonces, por ejemplo, si tiene una clase que maneja la memoria o los recursos, entonces debe asegurarse de liberar la memoria o el recurso cuando se destruya la clase. Un buen ejemplo de esto es si tiene una clase que gestiona una conexión a una base de datos. La conexión tendría que cerrarse para liberar el recurso antes de que tu clase sea destruida.

Cuestiones relacionadas