Go é uma linguagem de coleta de lixo:
http://golang.org/doc/go_faq.html#garbage_collection
Aqui está escrito que é um coletor de lixo de marcação e varredura, mas não se aprofunda em detalhes e uma substituição está em andamento ... ainda, este parágrafo parece não ter sido atualizado muito desde o lançamento do Go.
Ainda é marcar e varrer? É conservador ou preciso? É geracional?
garbage-collection
go
user1003432
fonte
fonte
Respostas:
Planos para o coletor de lixo Go 1.4+:
Atualizações do coletor de lixo do Go 1.3 além do Go 1.1:
Coletor de lixo Go 1.1:
Coletor de lixo Go 1.0:
Substituir o GC por um diferente é controverso, por exemplo:
fonte
(Para Go 1.8 - T1 2017, veja abaixo )
O próximo Go 1.5 Garbage Collector simultâneo do envolve a capacidade de "acompanhar" o gc.
Aqui está uma proposta apresentada neste artigo que pode servir para Go 1.5, mas também ajuda a entender o gc em Go.
Você pode ver o estado antes de 1.5 (Stop The World: STW)
(Foto da apresentação GopherCon 2015 " Go GC: Resolvendo o problema de latência no Go 1.5 ")
O único botão de ajuste para o coletor STW era “GOGC”, o crescimento de heap relativo entre as coleções. A configuração padrão, 100%, acionou a coleta de lixo sempre que o tamanho do heap dobrou em relação ao tamanho do heap ativo da coleta anterior:
Cronometragem do GC no coletor STW.
(Foto da apresentação do GopherCon 2015 " Go GC: Resolvendo o problema de latência no Go 1.5 ")
fonte
Esta é a implementação do GC:
https://github.com/golang/go/blob/master/src/runtime/mgc.go
Dos documentos na fonte:
fonte
O Go 1.8 GC pode evoluir novamente, com a proposta "Eliminar re-digitalização de pilha STW"
O anúncio está aqui e você pode ver que o commit de origem relevante é d70b0fe e anteriores.
fonte
Não tenho certeza, mas acho que o GC atual (dica) já é paralelo ou pelo menos é um WIP. Assim, a propriedade stop-the-world não se aplica mais ou não será em um futuro próximo. Talvez outra pessoa possa esclarecer isso com mais detalhes.
fonte