当前位置:网站首页>剖析SGI STL内存池总结
剖析SGI STL内存池总结
2022-08-06 13:00:00 【刚入门的代码spa技师】
剖析SGI STL内存池总结
对于任何的池组件,比如内存池、线程池、连接池、协程池、进程池…
他们都有一个共同的特点:频繁的资源申请和释放,会有明显的时间开销。而池组件的通用作用,就是提前申请资源,交给池来处理,而不是用默认的处理方式。省去频繁的资源申请释放的时间和性能开销。
内存池的作用,就是防止频繁的小块内存分配释放,产生很多的内存碎片,防止出现没有连续的大内存块可以申请。
而SGI STL二级空间配置器由下面几个优点:
- 对于每次填充备用池,都是多申请一块,一部分分出去切成chunk块使用,剩下的存在备用池等待使用,备用池可以给任意大小的chunk提供。
- 对于备用池剩余的内存块如果不足以凑成一个申请的chunk块,会把这块剩余的内存串到对于大小的自由链表节点下提供使用,备用池内存用的干干净净,不会有丝毫浪费。
- 当chunk块申请失败时不是直接抛异常,有一个异常处理的过程:首先会去遍历比当前申请chunk块大的自由链表节点下有没有空闲的大chunk块,如果有就借一个出去使用;还是不成功还会去检查用户有没有设置释放资源的函数,然后再去尝试申请
边栏推荐
- vulnhub-DC-2 drone penetration record
- 机器学习入门实战-KNN完成鸢尾花分类预测
- Multiple knapsack problem ← scale hour can be transformed into 0-1 knapsack problem
- NAS 系统调研
- LeetCode 897. Searching Trees in Ascending Order
- PBJ | 浙大马斌/茶叶所徐平-微生物组关联分析茶树-微生物遗传机制
- leetcode买卖股票系列问题
- 解决创建虚拟机时No DEFAULT or UI configuration directive found问题
- Kubernetes 集群 Ingress 网关
- 一文带你弄懂 CDN 的技术原理!
猜你喜欢
随机推荐
GDB/MI断点信息
验证日期格式
NAS 硬件采购配置记录
Kubernetes 集群 Ingress 网关
PHP+HTML+MySQL realizes login error
接口的安全设计三要素:ticket,签名,时间戳
哈希表 | 两个数组的交集 | leecode刷题笔记
【cookie & & session】
OPENCV study DAY10
分布式架构网络通信
leetcode买卖股票系列问题
leetcode 105. 从前序与中序遍历序列构造二叉树
微信视频号直播间涉黄
从没见过能把高并发拆解的这么详细!阿里巴巴这份堪称神级的“高并发”教程太香了
3D格式转换工具HOOPS Exchange最全技术指南(一):4大功能特征与典型使用场景
半年总结以及状态调整
Compilation warning unused parameter under Qt, the parameter is not used
智慧城市系列-1
基于互联网群体智能的知识图谱构造方法
Kubernetes日常故障解决









