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

时间:2015-08-24 15:40:36

标签: go compilation garbage-collection

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

1 个答案:

答案 0 :(得分:10)

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

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

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