Go 语言内存管理详解篇 | 青训营笔记

87 阅读1分钟

这是我参与「第五届青训营」笔记创作活动的第 4 天。笔记旨在记录自己的学习过程以及跟更多人分享交流,重点讲干货,不扣细节,从整体认知。废话不多说,上内容!!!

本堂课重点内容

  1. 自动内存管理
  1. Go 内存管理及优化
  1. 编译器和静态分析
  1. Go 编译器优化

详细知识点介绍

自动内存管理

1.png

2.png

3.png

4.png

5.png

6.png

7.png

  • Copying GC: 将存活对象从一块内存空间复制到另外一块内存空间,原先的空间可以直接进行对象分配

8.png

  • Mark-sweep GC: 将死亡对象所在内存块标记为可分配,使用 free list 管理可分配的空间

9.png

  • Mark-compact GC: 将存活对象复制到同一块内存区域的开头

10.png

11.png

Go 内存管理及优化

  1. Go 内存管理

提前将内存分块

内存缓存

  1. Go 内存管理的问题

  2. 字节跳动的优化方案

编译器和静态分析

编译器的结构

Go 编译器优化

  1. 函数内联

  2. 逃逸分析

实践练习例子

课后个人总结

  1. Go 语言内存管理这部分内容我学习到了很多新的内容,有些东西我还需要慢慢琢磨。

  2. 具体的一些总结看引用参考的第三点。

引用参考

  1. 稀土掘金字节内部课
  2. 高性能 Go 语言发行版优化与落地实践
  3. 后端专场 学习资料二 第五届字节跳动青训营