Golang中不同版本下scavenger的行为差异解析
Golang中不同版本下scavenger的行为差异解析 我观察到,在不同Go版本中,RSS(常驻集大小)释放给操作系统的行为有所不同。例如,在Go 1.16下,RSS在5小时后释放,而在Go 1.18下则释放得非常快。我在Go 1.18 发布说明 - Go编程语言中找到了这样的描述:“运行时现在能更高效地将内存返还给操作系统,并且经过调整后,其行为变得更加积极。”但我不知道这具体指的是哪项改进?我在GitHub上看到了许多关于清理器(scavenger)的问题和讨论。是否有关于清理器发展历史的解释?在每个Go版本中,我们应该期待什么样的行为?
另外,基于这个讨论 https://github.com/golang/go/issues/36398#issuecomment-648753457,即使设置了 GODEBUG=madvdontneed=1,如果像 memory.soft_limit_in_bytes 这样的cgroup配置不同,我是否应该预期RSS的释放延迟也会不同?
更多关于Golang中不同版本下scavenger的行为差异解析的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复


