Recolección de lixo

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda

O recolector de lixo

En Java o recolector de lixo, un proceso que se executa dentro da JVM, proporciona xestión automática de memoria. Todos os obxectos "viven" no heap que é a área de memoria usada para a asignación dinámica durante a execución dun programa. Cando se quere acceder a unha rexión de memoria asignada, é dicir, un obxecto, faise indirectamente, normalmente por medio dunha referencia a ese obxecto (unha variable do tipo do obxecto determinado).

O traballo do recolector de lixo é atopar e borrar obxectos no heap que non teñen ningunha referencia, é dicir, que non teñen ningunha variable apuntándoos. Unicamente a JVM decide exactamente cando executar o recolector de lixo. O programador só pode recomendar cando executar o recolector de lixo facendo a seguinte chamada:

System.gc();

A chamada ao método gc só lle suxire á JVM que faga un esforzo extra para liberar a memoria o antes posible, pero no executa o recolector explicitamente.

Antes de que un obxecto poda ser borrado polo recolector de lixo debe ser considerado como elixible. Un obxecto é elixible cando ningún thread activo do programa pode acceder a el, é dicir, cando non existe ningunha variable que referencia a ese obxecto.

A existentecia da xestión automática de memoria non implica que as aplicacións Java non podan acceder a partes da memoria non asignadas (por exemplo, cando se accede a un índice dun array fóra de rango) Existen dúas formas de desreferenciar un obxecto e, polo tanto, conseguir que sexa elixible:

  • Facer que a variable correspondente sexa null.
  • Facer que a variable correspondente apunte a outro obxecto