我有一个分配大量地图和切片的 Go 程序。通常有很多使用、分配开销等。我运行它,它加载了大量数据,然后我使用 Web 服务查询它。
在我让它运行后,当它读入所有数据并且没有做任何查询(即应该是稳定的)时,我看到内存波动。最近有报道称:5.42 GB、5.01 GB 和 4.3 GB 的实内存。这是一个巨大的波动。
我有大约 1.5 亿个对象(挂在主哈希表上的切片)。这是很多小物件。我预计会有一点波动(尽管当没有分配新对象并且主线程阻塞在套接字上时,我永远不会期望内存会增加)。
可能的解释是
大量小分配的开销只会乘以任何自然波动
一些代码正在分配对象(虽然我看不到如何)
Go GC 正在执行自己的分页 (?)
我正在使用 Mac OS,但不知何故它有问题
这种波动量是否正常/预期?
RISEBY
相关分类