Sobes.tech
Junior — Middle

Como é implementado o processo de libertação de memória reversa dentro do sistema?

sobes.tech IA

Resposta da IA

No Go, o processo de libertação de memória é implementado através do coletor de lixo incorporado. Este rastreia automaticamente os objetos na memória que não são mais utilizados pelo programa e os liberta.

As principais etapas do coletor de lixo são:

  1. Marcação (Mark) — o coletor percorre todas as referências ativas e marca os objetos acessíveis.
  2. Varredura (Sweep) — os objetos não marcados são considerados não utilizados e são libertados.

Isto acontece em segundo plano, sem exigir que o desenvolvedor gerencie manualmente a memória, o que reduz a probabilidade de erros relacionados com fugas de memória ou libertações duplas.

Exemplo de uso de memória em Go:

package main

import "fmt"

func main() {
    data := make([]int, 1000000) // aloca memória
    fmt.Println(len(data))
    // Após sair da função, data torna-se inacessível e será limpa pelo coletor de lixo
}

Aqui, a memória do slice data será libertada automaticamente quando deixar de ser referenciada.