后端进阶8.21日课程总结 | 青训营

107 阅读1分钟

8.21日的课程主要分为两个部分:
1.性能优化及自动内存管理
2.Go 内存管理 & 编译器优化思路

课程综合题目:高性能Go语言发行版优化与落地实践
细分为以下三个部分:
1.优化(内存管理优化,编译器优化)
2.背景(自动内存管理和Go内存管理机制,编译器优化的基本问题和思路)
3.实践(字节跳动遇到的性能问题以及优化方案)

性能优化的好处:成本,用户体验,软件处理体验
性能优化的层面:业务层,语言运行层,数据驱动

自动内存管理:(动态内存,自动内存管理(分配空间,找到存活对象,回收死亡空间))
相关专业概念:
1.Mutator:业务线程,分配新对象,修改对象指向关系
2.Collector: GC线程,找到存活对象,回收死亡对象的内存空间
3.Serial GC:只有一个collector
4.Parallel GC:支持多个collectors同时回收的GC算法
5.Concurrent GC: mutator(s)和collector(s)可以同时执行
6.评价GC算法:安全性,吞吐率,暂停时间,内存开销
7.追踪垃圾回收
8.引用计数

Go内存管理及优化
1.内存分配:分块,缓存,管理优化,字节的优化方案:Balanced GC(本质上是将多个小对象的分配合并成一次达对象的分配)

编译器与静态分析

编译器结构:

image (1).png

静态分析:
不执行程序代码,推导程序行为,分析程序性质
控制流
训练流
过程内分析和过程间分析

GO编译器优化:
函数内联,逃逸分析,性能收益