wxvirus wxvirus
首页
  • Go文章

    • Go语言学习
  • Rust

    • Rust学习
  • Java

    • 《Java》
  • Python文章

    • Python
  • PHP文章

    • PHP设计模式
  • 学习笔记

    • 《Git》
  • HTML
  • CSS
  • JS
  • 技术文档
  • GitHub技巧
  • 刷题
  • 博客搭建
  • 算法学习
  • 架构设计
  • 设计模式
  • 学习
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

无解的lifecycle

let today = new Beginning()
首页
  • Go文章

    • Go语言学习
  • Rust

    • Rust学习
  • Java

    • 《Java》
  • Python文章

    • Python
  • PHP文章

    • PHP设计模式
  • 学习笔记

    • 《Git》
  • HTML
  • CSS
  • JS
  • 技术文档
  • GitHub技巧
  • 刷题
  • 博客搭建
  • 算法学习
  • 架构设计
  • 设计模式
  • 学习
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • C&C++

  • PHP

  • Python

  • Go

    • go基础

    • go核心

      • 静态链接
      • 动态链接
      • ELF文件结构
      • runtime
        • Runtime
          • Go的Runtime特点:
          • Runtime的能力
          • 总结
      • Go的编译过程
      • Go程序是如何运行的
      • Go项目包管理方法
      • map的扩容
      • go协程调度机制
      • sync包的Pool
      • gRPC入门
    • 网络编程

    • gowebsocket

    • gocasbin

    • K8S

    • rabbitmq

    • 框架相关

    • go-zero

    • kafka

    • rpc

    • 性能相关

  • microservice

  • rust

  • Java

  • 学习笔记

  • 后端
  • Go
  • go核心
wxvirus
2022-05-12

runtime

# Runtime

我们可以打开 Goland 打开任意 go 项目,里面有一个External Libraries,这里有Go提供的各种源码包,里面有一个runtime包。

runtime

到底什么是runtime呢,从字面上来看,就是“运行时”,指的就是语言在运行时支撑的部分。

其实很多语言都有Runtime,换一种说法就是程序的运行环境。

  • Java:Java 虚拟机
  • JavaScript:浏览器内核或者 Node 内核

# Go的Runtime特点:

  • Go 没有虚拟机的概念
  • Runtime作为程序的一部分打包进二进制产物
  • Runtime随用户程序一起运行
  • Runtime与用户程序没有明显界限,直接通过函数调用

特点

# Runtime的能力

  • 内存管理能力

  • 垃圾回收能力(GC)

  • 超强的并发能力(协程调度),也是Runtime给我们处理的

  • 有一定的屏蔽系统调用能力,为了让 go 语言可以做到跨平台,在各个操作系统上的方式会帮我们进行处理

  • 一些 go 的关键字其实是Runtime下的函数

    关键字 函数
    go newproc
    new newobject
    make makeslice,makechain,makemap...
    <- chansend1, chanrecv1

    编译的时候会把左侧的转成右侧的函数调用,才会有意义。

# 总结

  • Go 的 Runtime 负责内存管理、垃圾回收、协程调度
  • Go 的 Runtime 被编译为用户程序的一部分、一起运行
编辑 (opens new window)
上次更新: 2022/05/12, 22:53:19
ELF文件结构
Go的编译过程

← ELF文件结构 Go的编译过程→

最近更新
01
vue3配合vite初始化项目的一些配置
07-26
02
网盘系统开发学习
07-24
03
linux多进程
06-19
更多文章>
Theme by Vdoing | Copyright © 2021-2024 wxvirus 苏ICP备2021007210号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式