栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

C++项目高并发内存池

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++项目高并发内存池

高并发内存池相比与malloc来讲,在多线程的场景下效率更高。

这个内存池主要要考虑的问题是:

性能多线程环境下,锁竞争问题内存碎片问题

高并发内存池主要有3层

    线程缓存层(thread cache):每一个线程都有一个独立的空间,当线程都要申请空间(小于256KB)时直接在线程内部申请,不需要加锁竞争。中心缓存层(central cache):中心缓存是所有线程共享的空间,线程缓存是按需从中心缓存中获取的对象。当线程缓存的内存不够时向中心缓存申请空间,中心缓存在适当的情况下要回收线程缓存,避免一个线程占用太多内存。中心缓存因为是所有线程共享的,所以要加锁,这里为了避免锁竞争激烈采用桶锁页缓存( page cache):页缓存是在central cache缓存下面的一层缓存,存储的内存是以页为单位存储及分配的,当中心缓存内存不够时,向页缓存申请空间。(从page cache分配出一定数量的page,并切割成定长大小的小块内存,分配给central cache)。同时如果中心缓存有内存被归还回来,页缓存会将归还回来的内存组成更大的页来缓解内存碎片问题。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749218.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号