Golang的垃圾收集器在编译时如何工作?

Chr*_*ski 6 garbage-collection compilation go

我试图理解golang的垃圾收集器在编译golang代码时是如何工作的,我想在使用go run时也是如此.我认为运行更直接,只需运行垃圾收集器以及正在运行的.go文件.但是在编译成可执行文件时,垃圾收集器是否也编译成二进制文件?

icz*_*cza 12

编译的目标文件不包含任何垃圾收集器"代码".

运行程序时go run,该go命令将编译源,在temp文件夹中创建并启动可执行二进制文件.见下文.

当编译应用程序并将其链接到可执行二进制文件时,在运行二进制文件时加载的可执行文件中也包含一个go 运行时.此运行时提供垃圾收集器以及其他服务,例如运行时反射和堆栈跟踪信息.这是简单的Hello World应用程序产生2 MB可执行二进制文件的主要原因.