go - 当指向结构的指针被替换时,GC 的行为如何

标签 go garbage-collection

我正在学习 Go,并且正在阅读图书馆中的示例。我发现一些示例正在使用:

type MyType struct {
  Code string
  //...
}


func main() {
  myType := &MyType{...}
  //...
  myType = &MyType{...}
}

基本上他们是在重用变量。我知道 &MyType{..} 返回一个指针,稍后我可以替换该指针。之前指向的内存会发生什么。 GC 会回收该内存还是我会浪费该内存。也许这是一个愚蠢的问题,我什么都不担心,但我正在尝试学习 Go 来构建性能 API :)

最佳答案

内存将被垃圾收集器回收。

如果你想替换结构你可以这样做:

func main() {
    myType := &MyType{...}
    //...
    *myType = MyType{...}
}

虽然差异可能可以忽略不计。

关于go - 当指向结构的指针被替换时,GC 的行为如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34750679/

相关文章:

types - 在 Go 中实现堆栈以存储结构的正确方法是什么?

闭包词法环境中的 JavaScript 内存泄漏

.net - .NET 中的 CUDA 全局内存释放问题

c++ - 自定义弱/强引用指针

java - 内部常量是否符合 GC 条件?

javascript - POST 请求在 beego 框架上被视为 OPTIONS

parsing - 如何正确解析时区代码

sql - 来自数据库/sql json 列的 json.RawMessage 被覆盖

go - 在 Go 中,如何在运行时从其类型创建一个新的结构实例?

c# - 在非托管异步操作期间保持对象事件