如果片段的容量已被unsafe.Pointer修改,那么垃圾收集会重用其余的内存吗?

时间:2014-12-16 09:42:36

标签: go garbage-collection

想想这个案子:

s := make([]byte, 512, 1024)
(*reflect.SliceHeader)((unsafe.Pointer(&s))).Cap = 512

是GC可以收集的最后512字节内存吗?

不管是不是,为什么?

1 个答案:

答案 0 :(得分:1)

据我所知,当前的垃圾收集器不会收集部分切片或字符串。对于:

也是如此
s=s[:512:512] // Like your example but idiomatically starting in Go1.3
s=s[128:] // first 128 elements are not collected.