【问题标题】:how does GC behave when a pointer to struct is replaced替换指向 struct 的指针时 GC 的行为如何
【发布时间】:2016-01-12 17:58:24
【问题描述】:

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

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


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

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

【问题讨论】:

  • 这就是垃圾收集的作用。如果不能引用内存,可以被GC回收。
  • 如果您对此感兴趣,阅读runtime 中的一些内容可能会很有用(GODEBUG 环境变量也会有所帮助)。 pprof 也很有用。

标签: go garbage-collection


【解决方案1】:

内存会被垃圾回收器回收。

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

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

不过,差异可能可以忽略不计。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多