C++内存池技术源码剖析
文章平均质量分 52
C++内存池技术源码剖析
打完代码打篮球
欢迎讨论~~
展开
-
SGI_STL和Nginx内存池源码剖析
之前做过的项目并未使用内存池,故最近学习了经典的优秀内存池的实现,进而在自己的项目中使用起来。原创 2024-04-02 21:12:12 · 138 阅读 · 0 评论 -
SGI_STL和Nginx内存池源码剖析--源码移植
源码文件复杂,并且有很多项目中使用不到的宏定义,所以通过改写和移植,可以很好的适应C++的其他项目。将SGISTL内存配置器和Nginx内存池源码,移植到自己的项目中。原创 2024-04-16 21:34:29 · 195 阅读 · 0 评论 -
SGI_STL空间配置器源码剖析(一)总览
如下是SGI STL的stl_vector.h文件中,vector类相关的声明:上图展示了通过宏定义,vector 区分使用C++标准提供的内存分配器(allocator)还是使用SGI自己实现的空间配置器。# else# endif# endif从上面可以看到 __STL_DEFAULT_ALLOCATOR通过宏控制有两种实现,一种是,另一种是alloc,这两种分别就是SGI STL的一级空间配置器和二级空间配置器的实现。原创 2024-04-10 21:23:23 · 912 阅读 · 0 评论 -
SGI_STL空间配置器源码剖析(二)辅助接口函数
空间配置器有两个不容易理解的,但是很重要的辅助函数:_S_round_up和_S_freelist_index。原创 2024-04-10 21:43:06 · 320 阅读 · 0 评论 -
SGI_STL空间配置器源码剖析(三)allocate内存分配函数
给出源码,功能和解读已经在注释中。原创 2024-04-10 22:06:28 · 173 阅读 · 0 评论 -
SGI_STL空间配置器源码剖析(四)_S_refill函数
功能是 将新创建的链表节点(chunk)成链。原创 2024-04-10 22:15:47 · 266 阅读 · 0 评论 -
SGI_STL空间配置器源码剖析(五)_S_chunk_alloc函数、oom和优点
S_chunk_alloc函数源码剖析、oom处理和SGI STL二级空间配置器内存池的实现优点原创 2024-04-10 22:33:42 · 559 阅读 · 0 评论 -
Nginx内存池相关源码剖析(一)总览
Nginx内存池是Nginx为了优化内存管理而引入的一种机制。在Nginx中,每个层级(如模板、TCP连接、HTTP请求等)都会创建一个内存池进行内存管理。当这些层级的生命周期结束时,整个内存池会被销毁,将分配的内存一次性归还给操作系统。减少频繁的malloc和free操作:通过内存池,避免了频繁的动态内存申请和释放,从而降低了内存管理的开销。防止内存泄漏:内存池可以有效地避免因为申请未释放、二次释放或异常流程未释放而导致的内存泄漏问题。提高内存使用效率。原创 2024-04-16 14:50:24 · 600 阅读 · 1 评论 -
Nginx内存池相关源码剖析(二)ngx_create_pool创建函数
【代码】Nginx内存池相关源码剖析(二)ngx_create_pool创建函数。原创 2024-04-16 15:05:40 · 189 阅读 · 0 评论 -
Nginx内存池相关源码剖析(三)小块内存分配逻辑
Nginx内存池通过一种预分配和复用的方式来管理小块内存。值得注意的是,Nginx没有提供小块内存的释放和回收函数和任何逻辑。这是由Nginx的工作环境所决定的。原创 2024-04-16 15:43:38 · 557 阅读 · 0 评论 -
Nginx内存池相关源码剖析(四)大块内存分配和释放逻辑
Nginx对于大块内存是调用系统的内存分配函数,然后将内存地址通过信息结构体进行管理。当Nginx不再需要一块大块内存时,它会调用操作系统的内存释放函数(如free)来将内存归还给操作系统。与分配过程类似,Nginx在释放大块内存时也不会进行额外的内存池管理操作。相反,它会依赖于操作系统的内存管理机制来自动处理内存碎片和回收工作。相对于小块内存的只有分配逻辑没有释放逻辑,大块内存两者都有。原创 2024-04-16 16:00:51 · 459 阅读 · 2 评论 -
Nginx内存池相关源码剖析(五)重置函数ngx_reset_pool
当内存池中的内存不再需要时,或者当需要重用内存池时,可以使用函数来清理和重置内存池,以便后续再次使用。原创 2024-04-16 16:27:15 · 265 阅读 · 0 评论 -
Nginx内存池相关源码剖析(六)外部资源释放和内存池销毁
destroy的释放顺序:1、通过回调函数链表,释放外部资源2、释放大块内存3、释放小块内存。原创 2024-04-16 17:00:07 · 356 阅读 · 0 评论 -
Nginx内存池相关源码剖析(七)内存池接口测试
【代码】Nginx内存池相关源码剖析(七)内存池接口测试。原创 2024-04-16 17:02:50 · 120 阅读 · 0 评论