Go 缓冲通道的内存分配是如何工作的

Go 缓冲通道的内存分配是如何工作的,go,Go,如果我有这样一个缓冲通道: ch := make(chan int, 1000000) 8MB的内存是在bat之外分配的,还是内存分配会根据数据量的大小而增加/减少?缓冲区的完整大小(加上我认为通道本身的两个字)将预先分配并保留,直到它被垃圾回收。在bat之外分配。如果你想要动态大小,你可能只想有一个切片,并使用一个锁来锁定对它的访问。可能8兆字节,因为现在大多数整数是64位的。

如果我有这样一个缓冲通道:

ch := make(chan int, 1000000)

8MB的内存是在bat之外分配的,还是内存分配会根据数据量的大小而增加/减少?

缓冲区的完整大小(加上我认为通道本身的两个字)将预先分配并保留,直到它被垃圾回收。

在bat之外分配。如果你想要动态大小,你可能只想有一个切片,并使用一个锁来锁定对它的访问。可能8兆字节,因为现在大多数整数是64位的。