如果我有这样的东西:
requests := make(chan *RequestStruct, 1000 * 1000)
responses := make(chan *ResponseStruct, 1000 * 1000)
如果所有的requests
和responses
都已经出队/消耗掉了,那么以前在那里的指针总有一天会被垃圾回收,对吗?(或者不会,因为没有人在频道上设置为零?(
信道在runtime/chan.go
中实现。从缓冲通道读取由函数chanrecv
实现,该函数执行以下操作:
qp := chanbuf(c, c.recvx)
typedmemmove(c.elemtype, ep, qp)
typedmemclr(c.elemtype, qp)
存储在通道中的元素由typedmemclr
清除,因此不会阻止指向的元素被垃圾收集。