我试图了解在编译 golang 代码时 golang 的垃圾收集器是如何工作的,我猜在使用 go run 时也是如此。我认为 go run 更直接一点,它只运行垃圾收集器以及您正在运行的 .go 文件。但是在编译为可执行文件时,垃圾收集器是否也编译到二进制文件中?
1 回答
慕村225694
TA贡献1880条经验 获得超4个赞
编译后的目标文件不包含任何垃圾收集器“代码”。
当使用 运行程序时go run
,该go
命令将编译您的源代码,在临时文件夹中创建并启动可执行二进制文件。见下文。
当应用程序被编译并链接到可执行二进制文件时,go运行时也包含在可执行文件中,该可执行文件在二进制文件启动时加载。此运行时提供垃圾收集器以及其他服务,例如运行时反射和堆栈跟踪信息。这就是为什么一个简单的 Hello World 应用程序会产生一个 2 MB 的可执行二进制文件的主要原因。
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消