Go内存管理|青训营笔记

36 阅读1分钟

这是我参与「第五届青训营」伴学笔记创作活动的第7天

1.自动内存管理

**自动内存管理:**垃圾回收,程序语言运行时系统管理动态内存(根据需求动态分配的内存)

三个任务:

1⃣️分配空间

2⃣️找到运行对象

3⃣️回收

如何评价GC算法效果?

  • 安全性:不能回收存活的对象
  • 吞吐率:其他程序运行时间/程序执行总时间
  • 暂停时间
  • 内存开销

1.1 追踪垃圾回收

image-20230125200730363

1.2 分代GC

image-20230125205036011

2.Go内存分配

分块

image-20230128103957259

缓存

image-20230128104525103

一些问题

image-20230128104659463

优化方案- BalancedGC

image-20230128104746916

image-20230128110251609

3.编译器和静态分析

编译器结构

image-20230128110340651

静态分析

image-20230128110540554

过程分析

image-20230128111359367

4.Go编译器优化

几种方式

image-20230128111712911

函数内联

image-20230128112007865

逃逸分析

image-20230128112152099