zenith-docs 1.0.0 Help

Runtime

Runtime(运行时),指的是程序运行所依赖的环境。这篇文档对比了 Go 的 Runtime 和其他语言的 Runtime 之间的区别,描述了 Go 的 Runtime 的相关特点。

不同语言实现Runtime的方式不同

不同语言其实现 Runtime 的方式不同、作用也不同。比如 Java 的 Runtime 就是 JVM(Java 虚拟机)。代码并不能直接编译成机器码运行,而是先编译成字节码,然后再 JVM 上解释或者二次编译运行。Runtime 还提供了比如 GC(垃圾回收)机制等功能。

对于 JavaScript 来说,Runtime 是 NodeJS 或者浏览器内核。由浏览器或者 NodeJS 来解释执行。

对于 PHP 来说,和 Java 是类似的,底层是 Zend 虚拟机,采用解释或者 JIT (即时编译)来执行代码。

Go 语言中的 Runtime

Go 语言中的 Runtime 首先是 Go 源码中的一个包,它是和我们自己编写的程序一起打包进最终的可执行文件的。换句话说,Runtime 是 Go 程序的一部分, 它也会随着我们编写的程序一起运行。那么 Go 语言中的 Runtime 有什么用呢?

  • 内存管理

  • GC,垃圾回收

  • 协程调度

  • 屏蔽了不同操作系统之间的接口差异

除此之外,Go 语言的一些关键字的实现,实际上是通过再编译时转换成对应的 Runtime 提供的函数实现的,下表举例说明:

关键字

函数

go

newproc

new

newobject

make

makeslice、makechain、makemap...

<-

chansend1,chanrecv1

Last modified: 05 August 2024