Sobes.tech
Middle

Onde são armazenados os tipos de referência e o que acontece com eles durante a execução da aplicação?

sobes.tech IA

Resposta da IA

Os tipos de referência são armazenados no heap.

Durante a execução da aplicação, o seguinte acontece:

  1. Criação: Ao criar um objeto de tipo referência (por exemplo, new MyClass()), a memória para esse objeto é alocada no heap. A variável que o contém armazena uma referência a essa seção de memória.
  2. Acesso: O acesso aos campos e métodos do objeto é feito através dessa referência.
  3. Recolha de lixo (Garbage Collection): Quando um objeto deixa de ser acessível de qualquer parte ativa do programa (não há referências a ele), o coletor de lixo pode liberar a memória que ocupa no heap. Este processo ocorre automaticamente "em segundo plano" e não requer intervenção explícita do programador. O coletor de lixo varre periodicamente o heap, encontra objetos inacessíveis e devolve a sua memória ao sistema.
  4. Modificação: O conteúdo do objeto no heap pode ser alterado. Se várias variáveis de referência apontam para o mesmo objeto, as alterações no seu estado serão visíveis através de outras variáveis.
  5. Reatribuição de referência: Uma variável de referência pode ser reatribuída para apontar para outro objeto ou para null.

Exemplo:

// Criação de um objeto String (cadeias - tipo de referência) no heap
String myString = "Hello";

// A variável myString_2 aponta para o mesmo objeto
String myString_2 = myString;

// Criação de um novo objeto String no heap e reatribuição da referência
myString = "World";

// Agora myString aponta para outro objeto, e myString_2 continua a apontar para o antigo