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:
- 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. - Acesso: O acesso aos campos e métodos do objeto é feito através dessa referência.
- 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.
- 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.
- 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