什么是高并发内存池
它是一个全球性大厂google(谷歌)的
开源项目,项目名字叫tcmalloc,全称是Thread-Caching Malloc
,即线程缓存的malloc
作用:
我们知道C语言在堆上开辟空间和
释放使用的是malloc和free函数
并且C++的动态内存管理new和delete
的底层实际上也调用了malloc和free
也就是说在所有场景下malloc函数都可以
使用,但是正是因为这种性质导致它在任何
情况下的效率都不太高,所以谷歌才自己做了
一套并发内存池的项目来解决在多线程情况下
malloc效率低下的问题,也就是说这个项目的
目的是在特定情况下代替C语言的malloc和free!
当然,我们去复刻一个一模一样的内存池也是不可能的,代码量太大,甚至读完代码都需要很长时间!所以我们这个项目的tcmalloc最核心的框架简化后拿出来,模拟实现出一个自己的高并发内存池,目的就是学习tcamlloc的精华。
什么是内存池
什么是池化技术?
就像我们上大学时父母给我们的生活费,一次给一个月或者一学期的,这样方便自己管理,如果每一次消费都去问父母打电话去要,可想而知效率有多低,这是一个道理。
什么是内存池?
内存池所解决的问题
内存池主要解决的当然是效率的问题,其次如果作为系统的内存分配器的角度,还需要解决一下内存碎片的问题。那么什么是内存碎片呢?
现在这个程序有256+512=768个byte 的空间,
但是此时申请一份600byte的 空间却开不出来,
因为B申请的空间把这 768个byte的空间分割开了,
形成了内存碎片。
项目需要知识内容
这个项目会用到C/C++、数据结构(链表、哈希桶)、操作系统内存管理、单例模式、多线程、互斥锁
高并发内存池项目整体来说还是较难的,不过如果做好了还是很吃香的,把这个项目理解扎实了,会很受面试官的认可。但是面试官可能也比较熟悉项目,对项目会问得比较深,比较细。如果你对项目掌握得不扎实,那么就容易碰钉子。