这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
1. 高性能Go语言发行版优化
1.1 内存管理优化
软件基本结构:
性能优化层面:
性能优化的原则——数据驱动
自动内存管理:
动态内存:程序在运行时根据需求动态分配的内存malloc()
自动内存管理(垃圾回收):由程序语言的运行时系统管理动态内存
追求吞吐率越高越好、暂停时间越短越好(业务无感知)、内存开销越小越好。
追踪垃圾回收:
分代GC:Generational GC
引用计数:
优点:
内存管理的操作被平摊到程序执行过程中
内存管理不需要了解runtime的实现细节:C++智能指针
缺点:
1.2 Go内存分配
分块:
目标:为对象在heap上分配内存
缓存:
字节优化方案:Balanced GC
2. 编译器优化
静态分析:
函数内联(lnlining):
内联:将被调用函数的函数体的副本替换到调用位置上,同时重写代码以反映参数的绑定
逃逸分析:分析代码中指针的动态作用域:指针在何处可以被访问到