#. Existem dois tipos de memória em java. Eles são chamados de pilha e heap, respectivamente.
A pilha é o espaço de memória do programa, portanto todos os tipos básicos e referências de objetos são armazenados na pilha.
O heap é onde a máquina virtual Java armazena objetos. É uma memória enorme. Quando você cria um objeto, a máquina virtual Java coloca o objeto no heap e o endereço do objeto criado na pilha.
Portanto, as referências a tipos e objetos básicos são armazenadas na pilha; os objetos são armazenados no heap;
#.Mecanismo de coleta de lixo em java
Quando você cria um novo objeto, Java aloca a memória necessária. Quando você termina de usar um objeto, o coletor de lixo do Java recupera a memória para você.
A coleta de lixo é executada em segundo plano na forma de threads, procurando objetos que não possuem referências úteis. Uma vez encontrados, os objetos são destruídos e a memória é recuperada.
A coleta de lixo é implementada entre máquinas virtuais Java. Eles geralmente seguem as mesmas etapas. Primeiro, o coletor de lixo obtém um instantâneo dos threads em execução e de todas as classes carregadas.
Então todos os objetos envolvidos no thread são marcados como usados recentemente. Quando todos os objetos que possam estar envolvidos são marcados, os restantes não marcados são descartados.
Para ajudar a máquina virtual, é uma boa prática remover proativamente alguns objetos que não são mais necessários. Isso pode ser feito definindo a referência como nula.
por exemplo:
Texto t = novo Teste();
t.someAction();
//tudo feito
t = nulo;