2012-05-31 12 views

Respuesta

7

opuede obtener la basura recogida una vez que ya no es alcanzable, si es definitiva o no. Obviamente, siempre que se ejecute execute, si necesita acceder a o, se evitará GC.

Cuando execute se ejecuta y suponiendo que no ha almacenado ninguna referencia a o (por ejemplo, en una colección), se marcará como listo para la recolección de elementos no utilizados.

2

No existe relación entre la palabra clave final y la duración de la variable.

Será basura recolectada cuando ya no sea necesaria, y dado que es un parámetro, esto puede suceder fuera del método (si no hay referencia externa).

La palabra clave final es solo una restricción dada al compilador para prohibir cualquier modificación adicional de la referencia o después de la llamada de la función.

+1

Eso no está muy bien expresado. El "espacio vital" debe ser "vitalicio". Obviamente, quien llama al método debe haber tenido una referencia, y la instancia de clase anónima tiene otra. La palabra clave 'final' prohíbe cualquier modificación a esa * variable * después de la inicialización, * durante * la ejecución del método, que es todo su alcance. – EJP

5

Cuando la instancia de clase anónima reúne los requisitos para la recolección de basura, si nada más hace referencia al objeto al que se hace referencia o cuando se llama al método, ese objeto será elegible para recolección de basura.

No hay nada especial acerca de las variables finales que disuadan la recolección de basura.

2

'final' no tiene ningún efecto en el GC. El objeto será elegible para la recopilación cuando se vuelva inalcanzable. En este caso, hay al menos tres referencias, cualquiera de las cuales puede detener eso: el parámetro 'final', que desaparece cuando el método retorna; la referencia del que llama; y la copia de la variable final en la instancia de clase anónima.

Cuestiones relacionadas