gpt4 book ai didi

go - golang 的 GC 会释放仅由 goroutine 引用的对象的内存吗?

转载 作者:数据小太阳 更新时间:2023-10-29 03:43:49 24 4
gpt4 key购买 nike

m := map[string]*Object {
"a": obj
}
go func(obj *Object) {
obj.Do()
}(m["a"])

delete(m, "a")

obj.Do() 没有完成时,GC 会释放 obj 的内存吗?

最佳答案

代码会求值

m["a"]

这会给出指针obj,然后obj会被放​​到goroutine的一个新栈上,然后goroutine会从那个栈开始,然后obj会从原来goroutine中的map中移除。那时新的 goroutine 堆栈将有一个指向 obj 的指针,因此在第二个 goroutine 完成执行之前,obj 不会因为这个原因而被 gc。

关于go - golang 的 GC 会释放仅由 goroutine 引用的对象的内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50363561/

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