ejemplo, elementos de la matriz
Si hay una referencia a un objeto, que no pueden ser basura recogieron. Especialmente si ese objeto (y todo el gráfico detrás de él) es grande, solo hay una referencia que está deteniendo la recolección de basura, y esa referencia ya no es necesaria, esa es una situación desafortunada.
Los casos patológicos son el objeto que conserva una instancia insensible a todo el árbol DOM XML que se utilizó para configurarlo, el MBean no registrado o la única referencia a un objeto de una aplicación web no desplegada que impide un todo classloader de ser descargado.
De modo que, a menos que esté seguro de que el objeto que contiene la referencia en sí mismo será basura recogida de todos modos (o incluso entonces), debe anular todo lo que ya no necesita.
las variables con ámbito:
Si usted está considerando el establecimiento de una variable local para anular antes del final de su ámbito de aplicación, por lo que puede ser reclamado por el recolector de basura y para marcarlo como "no utilizable a partir de ahora ", deberías considerar ponerlo en un alcance más limitado en su lugar.
{
BigObject obj = ...
doSomethingWith(obj);
obj = null; // <-- explicitly set to null
doSomethingElse();
}
convierte
{
{
BigObject obj = ...
doSomethingWith(obj);
} // <-- obj goes out of scope
doSomethingElse();
}
alcances largas y planas son generalmente malas para la legibilidad del código, también. Tampoco es extraño que se introduzcan métodos privados para romper las cosas solo para ese propósito.
Haz clic aquí. En los tiempos de ejecución modernos, no debería ver ningún aumento significativo en el rendimiento o la huella de memoria. –
@Jason, perfúlalo? Eso supone que perfilaré un conjunto lo suficientemente grande para obtener un conjunto de resultados lo suficientemente bueno como para responder a esto. Y que no elijo un conjunto de casos en los que la VM esté lo suficientemente optimizada como para enmascarar los problemas de rendimiento y gc. Es por eso que estoy preguntando esto aquí. Para tener una idea de los casos donde esto es un problema. – sal
Duplicado de http://stackoverflow.com/questions/449409/does-assigning-objects-to-null-in-java-impact-garbage-collection. –