Você está na página 1de 6

Garbage collector

 É um processo que automatiza o gerenciamento de memória de um programa


em execução;
 Ou seja, ele automatiza o gerenciamento do Heap;
 Ele monitora os objetos alocados dinamicamente pelo programa (no heap),
desalocando aqueles que não estão mais sendo utilizados.

 Se eu faço p1 = p2, a variável p1 vai apontar para onde a variável p2 aponta:


 O objeto de cima, perdeu a referência;
 Um objeto sem referência, vai ser desalocado pelo garbage collector;
Isso significa que garbage collector libera memória

Desalocação por escopo


 Imagina que o método abaixo começou a executar;
Dentro do Stack, teremos um escopo vinculado ao método `method1` e dentro
desse escopo, teremos a variável x armazenando 10;
 Ao entrar no bloco do if, a variável y vai ser alocada em um sub-escopo dentro
do método (figura abaixo);
Quando a execução passar para a próxima linha, imediatamente a variável do if
vai simplesmente sumir (próxima página).
 Note que ao acabar a execução do método, imediatamente as variáveis locais do
método serão desalocadas
 Note a seguir que a variável do tipo Product recebe a chamada do method2:

 Quando a chamada for executada, a execução vai para o método:


 O Java executa a linha apontada pela seta;
 Dentro do escopo do method1, é criado um sub-escopo;
No escopo do method2 vai ser criado a variável local prod;
Como foi dado o new, o objeto então vai ser criado no Heap e o prod vai apontar
para o objeto no Heap;
 Note que o method2 retorna o prod;
O prod é uma variável do tipo referência, ou seja, o method2 retorna a referência
para o objeto;
Quando o return for executado acontece como está abaixo:
A variável p recebe essa referência;
O p portanto, vai apontar para esse objeto;
Ao imprimir p.Name, a String “TV” é exibida

Mesmo sendo um método com escopo provisório, o que for INSTANCIADO no


Heap é mantido;
Como a referência para esse objeto foi retornada, a referência vai para a variável
p;
 Então, o objeto não perdeu a referência;
Dessa forma, ele continua existindo e podendo ser utilizado

Você também pode gostar