Go to język zbierania śmieci:
http://golang.org/doc/go_faq.html#garbage_collection
Tutaj jest napisane, że jest to garbage collector typu mark-and-sweep, ale nie zagłębia się w szczegóły, a zamiana jest w toku ... jednak ten akapit wydaje się nie być zbytnio aktualizowany od czasu wydania Go.
Nadal jest to znak i zamiatanie? Czy jest konserwatywne czy precyzyjne? Czy jest pokoleniowa?
garbage-collection
go
user1003432
źródło
źródło
Odpowiedzi:
Plany na śmieciarkę Go 1.4+:
Idź aktualizacje garbage collectora 1.3 na dodatek Go 1.1:
Śmieciarka Go 1.1:
Go 1.0 garbage collector:
Zastąpienie GC innym jest kontrowersyjne, na przykład:
źródło
(Dla Go 1.8 - Q1 2017, patrz poniżej )
Następny współbieżny Garbage Collector Go 1.5 obejmuje możliwość „tempa” wspomnianego gc.
Oto propozycja przedstawiona w tym artykule, która może sprawić, że będzie działać w Go 1.5, ale także pomoże zrozumieć gc w Go.
Możesz zobaczyć stan sprzed 1.5 (Stop The World: STW)
(Zdjęcie z prezentacji GopherCon 2015 „ Go GC: Solving the Latency Problem in Go 1.5 ”)
Jedynym pokrętłem strojenia dla kolekcjonera STW było „GOGC”, względny wzrost sterty między kolekcjami. Domyślne ustawienie, 100%, wyzwalało wyrzucanie elementów bezużytecznych za każdym razem, gdy rozmiar sterty podwoił się w stosunku do aktualnego rozmiaru sterty od poprzedniej kolekcji:
GC taktowanie w kolektorze STW.
(Zdjęcie z prezentacji GopherCon 2015 „ Go GC: Solving the Latency Problem in Go 1.5 ”)
źródło
Oto implementacja GC:
https://github.com/golang/go/blob/master/src/runtime/mgc.go
Z dokumentów w źródle:
źródło
Go 1.8 GC może ewoluować ponownie, z propozycją „Eliminacja ponownego skanowania stosu STW”
Zapowiedź jest tu i widać istotne źródło popełnić jest d70b0fe i wcześniej.
źródło
Nie jestem pewien, ale myślę, że obecny (wskazówka) GC jest już równoległy lub przynajmniej jest to WIP. W ten sposób właściwość „stop-the-world” nie ma już zastosowania lub nie będzie obowiązywać w najbliższej przyszłości. Być może ktoś inny może to wyjaśnić bardziej szczegółowo.
źródło