Go · Avançado · Inglês · Informal
goroutine leak
Goroutine que nunca termina porque ficou bloqueada esperando um channel, um lock ou um sinal que nunca vem. Cada uma segura memória e pilha enquanto o processo viver.
Onde usar
Aparece como crescimento lento de memória e do número de goroutines em produção. Em review, a pergunta é: o que garante que essa goroutine termina?
Em código
func vazar() {
ch := make(chan int)
go func() {
ch <- 1 // ninguém recebe: fica presa
}()
}
// runtime.NumGoroutine() só cresceExemplos
The memory graph climbs because of a goroutine leak.
O gráfico de memória sobe por causa de um goroutine leak.
Every timeout left one goroutine stuck, a classic leak.
Cada timeout deixava uma goroutine presa, um vazamento clássico.
Cuidado
O garbage collector não recolhe goroutines bloqueadas; elas continuam vivas e referenciadas até o processo acabar.
Sinônimos
vazamento de goroutine