golang 的垃圾收集器在编译时是如何工作的?
How does golang's garbage collector work when compiled?
我想了解编译 golang 代码时 golang 的垃圾收集器是如何工作的,我想在使用 go 运行 时也是如此。我认为 go 运行 更直接一些,只是 运行 垃圾收集器以及您正在 运行ning 的 .go 文件。但是在编译为可执行文件时,垃圾收集器是否也被编译到二进制文件中?
编译后的目标文件不包含任何垃圾收集器"code"。
当程序 运行 和 go run
时,go
命令将编译您的源代码,在临时文件夹中创建并启动可执行二进制文件。见下文。
当应用程序被编译并链接到可执行二进制文件时,go 运行time 也会包含在可执行文件中,该可执行文件将在二进制文件启动时加载。此 运行time 提供垃圾收集器以及其他服务,例如 运行time 反射和堆栈跟踪信息。这是一个简单的 Hello World 应用程序生成 2 MB 可执行二进制文件的主要原因。
我想了解编译 golang 代码时 golang 的垃圾收集器是如何工作的,我想在使用 go 运行 时也是如此。我认为 go 运行 更直接一些,只是 运行 垃圾收集器以及您正在 运行ning 的 .go 文件。但是在编译为可执行文件时,垃圾收集器是否也被编译到二进制文件中?
编译后的目标文件不包含任何垃圾收集器"code"。
当程序 运行 和 go run
时,go
命令将编译您的源代码,在临时文件夹中创建并启动可执行二进制文件。见下文。
当应用程序被编译并链接到可执行二进制文件时,go 运行time 也会包含在可执行文件中,该可执行文件将在二进制文件启动时加载。此 运行time 提供垃圾收集器以及其他服务,例如 运行time 反射和堆栈跟踪信息。这是一个简单的 Hello World 应用程序生成 2 MB 可执行二进制文件的主要原因。