![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高并发内存池
文章平均质量分 96
Luojj_2020
码云:https://gitee.com/yuelinghou
展开
-
【高并发内存池】第七篇:回收内存过程调通
文章目录一. 回收内存主流程梳理二. 完整代码1. Common.h2. ThreadCache相关文件3. CentralCache相关文件4. PageCache相关文件5. ConcurrentAlloc.h三. 回收内存联调1. 单线程回收内存测试一. 回收内存主流程梳理二. 完整代码1. Common.h该头文件中包含公共的数据结构、方法、常量等。#pragma once#include <mutex>#include <thread>#include原创 2022-04-18 23:43:37 · 251 阅读 · 0 评论 -
【高并发内存池】第六篇:释放内存流程
文章目录一. ThreadCache回收内存1. 基本步骤2 FreeList类中的补充3. 线程缓存回收小块定长内存实现二. CentralCache回收内存1. 基本步骤2. PageCache类中的补充一. ThreadCache回收内存1. 基本步骤当线程释放内存小于256KB时会将内存释放回ThreadCache,计算对象大小bytes映射ThreadCache自由链表桶的下标 i,将对象PushFront到_freeLists[ i ]。当自由链表的长度过长,则回收一部分小块定长内存到原创 2022-04-14 15:00:00 · 833 阅读 · 2 评论 -
【高并发内存池】第五篇:申请内存过程调通
文章目录一. 单线程申请内存流程二. 申请内存完整代码一. 单线程申请内存流程二. 申请内存完整代码原创 2022-04-13 16:10:00 · 833 阅读 · 1 评论 -
【高并发内存池】第四篇:PageCache初步设计
文章目录一. PageCache介绍二. PageCache基本框架三. 其它接口和数据的补充一. PageCache介绍页缓存(PageCache)是在中心缓存(CentralCache)下面的一层缓存,存储的内存是以页为单位存储及分配的,中心缓存没有内存对象时,从PageCache分配出一定数量的页(一页是8KB),把它们切割成定长大小的小块内存,分配给中心缓存。当中心缓存中一个span的几个跨度页的对象都回收以后,PageCache会回收中心缓存满足条件的span对象,合并相邻页,组成更大的页,缓原创 2022-04-07 18:00:00 · 1466 阅读 · 0 评论 -
【高并发内存池】第三篇:CentralCache初步设计
文章目录一. CentralCache介绍二. CentralCache相关结构介绍1. 管理一个大块跨度内存的span类2. 管理Span的SpanList类一. CentralCache介绍中心缓存是所有线程所共享的,ThreadCache按需从CentralCache中获取对象,另外CentralCache合适的时机回收ThreadCache中多余不用的的对象,避免一个线程占用了太多的内存,而其它线程的内存吃紧情况,达到内存分配在多个线程中更均衡的按需调度的目的。CentralCache是存在竞争原创 2022-04-07 11:10:31 · 840 阅读 · 0 评论 -
【高并发内存池】第二篇:ThreadCache初步设计
文章目录一. ThreadCache介绍二. ThreadCache基本功能1. 申请内存(Pop)2. 释放内存(Push)三. ThreadCache初步设计1. ThreadCache基本框架2. 对象空间和哈希桶块空间大小的映射、对齐关系四. 完整代码以及ThreadCahe测试Common.hThreadCache.hThreadCache.cppConcurrentAlloc.hTest.cpp一. ThreadCache介绍线程缓存(ThreadCache)是每个线程独有的,用于小于256原创 2022-04-06 20:32:33 · 1107 阅读 · 0 评论 -
【高并发内存池】第一篇:定长内存池设计
文章目录一. 什么是内存池?1. 池化技术2. 内存池概念二. 为什么要有内存池?1. 内存碎片问题2. 内存池带来的好处三. 定长内存池设计1. 定长内存池特点2. 定长内存池基本思想3. 定长内存池实现2.1 基本框架一. 什么是内存池?1. 池化技术内存池是池化技术的一种应用。所谓“池化技术”,就是程序先向系统申请过量的资源,然后自己管理,以备不时之需。之所以要申请过量的资源,是因为每次申请该资源都有较大的开销,不如提前申请好了,这样使用时就会变得非常快捷,大大提高程序运行效率。生活中的池化原创 2022-04-06 14:30:08 · 1027 阅读 · 0 评论