Go es un lenguaje de recolección de basura:
http://golang.org/doc/go_faq.html#garbage_collection
Aquí dice que es un recolector de basura de marcar y barrer, pero no profundiza en los detalles, y se está trabajando en un reemplazo ... sin embargo, este párrafo parece no haberse actualizado mucho desde que se lanzó Go.
¿Todavía es marca y barrido? ¿Es conservador o preciso? ¿Es generacional?
garbage-collection
go
usuario1003432
fuente
fuente
Respuestas:
Planes para el recolector de basura Go 1.4+:
Actualizaciones del recolector de basura Go 1.3 además de Go 1.1:
Ir al recolector de basura 1.1:
Ir al recolector de basura 1.0:
Reemplazar el GC por uno diferente es controvertido, por ejemplo:
fuente
(Para Go 1.8 - Q1 2017, ver más abajo )
El próximo recolector de basura concurrente de Go 1.5 implica poder "marcar el ritmo", dijo gc.
Aquí hay una propuesta presentada en este documento que podría ser compatible con Go 1.5, pero también ayuda a comprender el gc en Go.
Puede ver el estado antes de 1.5 (Stop The World: STW)
(Foto de la presentación de GopherCon 2015 " Go GC: Resolviendo el problema de latencia en Go 1.5 ")
La única perilla de ajuste para el colector STW era "GOGC", el crecimiento relativo del montón entre colecciones. La configuración predeterminada, 100%, activaba la recolección de basura cada vez que el tamaño del montón se duplicaba sobre el tamaño del montón en vivo de la colección anterior:
Sincronización de GC en el colector STW.
(Foto de la presentación de GopherCon 2015 " Go GC: Resolviendo el problema de latencia en Go 1.5 ")
fuente
Esta es la implementación del GC:
https://github.com/golang/go/blob/master/src/runtime/mgc.go
De los documentos en la fuente:
fuente
Go 1.8 GC podría evolucionar nuevamente, con la propuesta "Eliminar el re-escaneo de la pila STW"
El anuncio está aquí y puede ver que la confirmación de fuente relevante es d70b0fe y anterior.
fuente
No estoy seguro, pero creo que el GC actual (punta) ya es paralelo o al menos es un WIP. Por lo tanto, la propiedad de detener el mundo ya no se aplica o no se aplicará en un futuro próximo. Quizás alguien más pueda aclarar esto con más detalle.
fuente