用slice作队列,pop出队头之后,对应的内存会被回收吗?
来源:3-3 切片的操作

慕哥4405024
2018-11-14
老师:
我们经常使用slice来作队列,就像后面的爬虫也是用slice来作队列的。它会经常有如下代码:
var aQ []int
//入队
aQ = append(aQ, 1,2,3,4, aSlice...)
//出队
aQ = aQ[1:]
aQ = aQ[1:]...
因为我们这个slice的出队操作新的slice和旧的slice还是公用底层的数组,在多次入队和出队操作之后,有很长的队头是没有用了的,系统会回收回去吗?
写回答
1回答
-
慕哥4405024
提问者
2018-11-14
好像我知道了,在append超过cap的时候,会把旧的有用的部分复制到新的内存中,旧的内存由于没有人引用了,会被系统自动回收回去,所以用slice作队列不会存在 底层数组不停地增长,而有用的部分很少的情况。
00
相似问题
关于队列实现调度器问题
回答 1
关于workerQ队列的问题
回答 1