Go内存管理 | 青训营笔记

65 阅读1分钟

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

前言

本文仅仅是对课程的总结和回顾,方便后续查阅,以及自己的一些心得总结,若有错误,请大家不吝赐教

自动内存管理

1. 基本概念

  • 动态内存:运行时根据需求动态分配的内存
  • 自动内存管理:程序语言运行系统管理内存=》避免手动,保证内存管理的正确性和安全性
  • 三个任务:分配空间、找到存活对象、回收
  • Mutator:业务线程,分配新对象
  • Collector:GC线程,回收内存空间
  • Serial GC:只有一个collector
  • Paoallel GC:支持多个collector同时祸首
  • Concurrent GC:Mutator和Collector同时执行

image.png

2. 追踪垃圾回收

  • 对象被回收条件:指向关系不可达的对象
  • 步骤: 1. 标记根对象 2.标记可达对象 3.清理不可达对象

3.分代GC

  • 分代假说:很多对象分配出来后很快就不再使用

4.引用计数

  • 对象存货条件:引用数大于0

go内存管理优化

总结

这一块对我来说有点抽象,后面继续研究补充内存管理优化的内容