这是我参与「第五届青训营 」伴学笔记创作活动的第6天
1.自动内存管理
1.1自动内存管理的概念
自动内存管理(也称垃圾回收),管理的是动态内存(程序在运行时根据需求动态分配的内存),程序语言的运行时系统管理动态内存,这样就可以避免手动内存管理,使我们的程序员更专注于实现业务逻辑,降低开发压力,保证内存使用的正确性和安全性
1.2GC(垃圾回收)三大主要核心任务
- 为新对象分配新空间
- 找到存活对象(程序执行的时候还会使用到的对象)
- 回收死亡对象的内存空间
1.2GC(垃圾回收)涉及的相关概念
1.2.1GC算法(其中蓝色线条代表Mutator,橙色线条代表Collector):
Mutator: 业务线程,分配新对象,修改对象指向关系
Collector: GC线程,找到存活对象,回收死亡对象的内存空间
- Serial GC:只有一个collector(会暂停)
- Parallel GC:并行GC,支持多个collectors同时回收的GC
- Concurrent GC:并发GC,支持mutator(s)和collector(s)同时执行
1.2.2GC算法的性能指标
- 安全性(Safety):不能回收存活的对象,安全性是基本要求
- 吞吐率(Throughput)=,衡量的是花在GC上执行的时间,吞吐率越大说明花在GC上的时间越少,效率更高
- 暂停时间(Pause time):stop the world (STW),暂停时间越短越好
- 内存开销(Space overhead):GC内存开销越小越好