Junior — Middle
Como é que o período de existência dos objetos na memória heap gerida é determinado?
sobes.tech IA
Resposta da IA
No Go, a duração de vida dos objetos no heap gerido é determinada pelo tempo de vida das referências a esses objetos. Se existirem referências ativas (variáveis, ponteiros) a um objeto no heap, o coletor de lixo (GC) considera o objeto vivo e não o remove. Assim que todas as referências ao objeto desaparecem (o objeto torna-se inacessível), o GC marca-o para remoção.
O Go usa um coletor de lixo de três gerações com um algoritmo de rastreamento de alcançabilidade: começando pelos objetos raiz (pilha, variáveis globais), marca todos os objetos alcançáveis, os outros são considerados lixo.
Exemplo:
func f() {
p := new(int) // objeto no heap
*p = 42
// p existe, o objeto está vivo
}
// após sair de f(), o objeto torna-se inacessível e será removido pelo GC