高并发内存池的介绍
Posted 世_生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高并发内存池的介绍相关的知识,希望对你有一定的参考价值。
从零实现一个高并发内存池
项目介绍
当前高并发内存池的原型是Google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc,free)。
我们的高并发内存池的项目只是把tcmalloc最核心的框架简化后拿出来,模拟实现出一个自己的高并发内存池,目的就是学习tcmalloc的精华。
这个项目会用到C/C++、数据结构(链表、哈希桶)、操作系统内存管理、单例模式、多线程、互斥锁等等方面的知识,加油吧。
池化技术
所谓的“池化技术”就是程序向系统申请过量的资源,然后自己来管理,以备不时之需。这样就不需要每次都要去向系统申请,提前申请好,大大提高了程序的运行效率。
在计算机中,很多地方都使用“池”这种技术,如,内存池、连接池、线程池、对象池。
内存池
内存池是指程序预先向操作系统申请一块足够大的内存,此后,当程序中需要申请内存的时候,不是直接向操作系统申请,而是直接从内存池中获取;同理,当程序释放内存时,并不是将内存还给操作系统,而是还给内存池。当程序退出(或特定的时间)时,内存池才将之前的内存正真释放。
内存池主要解决的问题
- 效率问题
- 内存碎片问题
内存碎片分为内碎片和外碎片,外碎片的一些空闲的连续内存区域太小,这些内存空间不够连续,不能满足一些内存分配申请的需求。内碎片是由于一些对齐规则的需求,导致分配出去的空间中一些内存无法被利用。
以上是关于高并发内存池的介绍的主要内容,如果未能解决你的问题,请参考以下文章