这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天,今天主要学习了Go语言的性能优化部分和内存管理。
1.性能优化
性能优化是什么?
性能优化是提升软件系统的处理能力,减少不必要的消耗,充分发掘计算机算力。
为什么要性能优化?
带来用户体验的提升 资源高效利用
性能优化的层数
2.自动内存管理
自动内存管理即垃圾回收:由程序语言运行时系统管理动态内存。 避免手动内存管理,让开发者更加专注于实现业务逻辑 保证内存使用的正确性和安全性
2.1自动内存管理的相关概念
Mutator:业务线程、分配新对象,修改对象指向关系 Collector:GC 线程,找到存活对象,回收死亡对象的内存空间 Serial GC:只有一个 collector Parallel GC:支持多个 collectors 同时回收的 GC 算法 Concurrent GC:mutator 和 collector 可以同时执行,必须感知到对象指向关系的改变
2.2评价自动内存管理算法指标
- 安全性: 不能回收存活的对象
- 吞吐率: 花在 GC 上的时间
- 暂停时间: stop the world,暂停逻辑代码
- 内存开销: GC 元数据开销
2.3常用的自动内存管理算法
1.追踪垃圾回收:
对象被回收的条件:指针指向关系不可达的对象
标记根对象:静态变量、全局变量、常量、线程栈等
2.分代GC:
3.引用计数:
每个对象都有一个与之相关联的引用数目
对象存活的条件:当且仅当引用数>0
3.总结
本次课程学习到了自动内存管理的相关概念,以及常用的自动内存管理算法。