O garbage collector automatiza o gerenciamento da memória de um programa, monitorando objetos alocados dinamicamente no heap e desalocando aqueles que não são mais utilizados, liberando assim memória para novos objetos.
O garbage collector automatiza o gerenciamento da memória de um programa, monitorando objetos alocados dinamicamente no heap e desalocando aqueles que não são mais utilizados, liberando assim memória para novos objetos.
O garbage collector automatiza o gerenciamento da memória de um programa, monitorando objetos alocados dinamicamente no heap e desalocando aqueles que não são mais utilizados, liberando assim memória para novos objetos.
É 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