内存管理
内存上下文
源码主要在mctx.c
中,主要是目的是设置工作空间,避免重复的在系统上申请资源,且为了避免异常情况下的内存泄露问题,所以实现了内存上下文
- 目前有三种底层的实现
- AllocSet(常规的内存分配机制,先分配block,之后再从block上分配chunk,分配得内存一般不会释放,而是使用空闲链表管理)
- Generation(新加,内存生命周期相近的时候使用,目前只在gist 和 replication 模块使用)
- Slab(分配大小等大的chunk,目前只在replication 模块使用)
- 更多的是因为频繁的malloc会导致内存碎片,且由于malloc需要额外的空间记录head和foot的位置,所以还存在的问题就是空间的浪费,另外最大的问题是内存泄漏问题,使用指针在方法间传递不容易管理
- 大概类似c++的内存管理方法,把
Read other posts