gpt4 book ai didi

go - 是否有一种有效的方式来回收过剩容量的 slice ?

转载 作者:IT王子 更新时间:2023-10-29 02:24:34 25 4
gpt4 key购买 nike

我有大量已分配的 slice (几百万),我已将其附加。我敢肯定,他们中的很多人都重载了。我想尝试减少内存使用量。

我的第一个尝试是遍历所有这些,分配一个新的 len(oldSlice) slice 并将值复制过来。不幸的是,这似乎会增加内存使用量(最多增加一倍)并且垃圾收集回收内存的速度很慢。

是否有一种好的通用方法可以减少大量超容量 slice 的内存使用量?

最佳答案

在不知道确切问题的情况下,很难选择正确的策略来分配缓冲区。

通常你可以尝试重用你的缓冲区:

type buffer struct{}

var buffers = make(chan *buffer, 1024)

func newBuffer() *buffer {
select {
case b:= <-buffers:
return b
default:
return &buffer{}
}
}

func returnBuffer(b *buffer) {
select {
case buffers <- b:
default:
}
}

关于go - 是否有一种有效的方式来回收过剩容量的 slice ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21368220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com