【问题标题】:How does memory allocation work for buffered channels缓冲通道的内存分配如何工作
【发布时间】:2016-04-06 19:10:48
【问题描述】:

如果我有这样的缓冲通道:

ch := make(chan int, 1000000)

是立即分配了 8MB 内存,还是内存分配会根据数据量增加/减少?

【问题讨论】:

  • 立即分配。如果您想要动态大小,您可能只想拥有一个切片并使用sync.Mutex 来锁定对它的访问。
  • 可能是 8 MByte,因为现在大多数整数都是 64 位。

标签: go


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-30
    • 2015-09-14
    • 2017-04-17
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    相关资源
    最近更新 更多