跨平台高效HTTP队列实现方案之内存池基础组件.
来源:互联网 发布:淘宝直播粉丝可以买吗 编辑:程序博客网 时间:2024/05/07 05:19
内存池技术大致方案都是提前开辟一定空间的内存,以供程序使用,避免内存碎片对系统分配后续内存的影响,不但能够提高操作系统的效率,减少实际内存开销,同时也提高了程序本身的效率,因为使用malloc从系统获取内存和从内存块获取某个空间的指针的时间周期是不一样的。
这里要介绍的内存池组件是基于pjlib库中的组件,内存池组件的方案在网上找找也有好几种,pjlib库中的个人觉得还是比较不错的,基于可增量的固定块大小,以链表管理的可扩展队列方案。可增量的固定块大小,指的是内存块大小开辟时是固定的,但是可根据不同需求进行增量扩展,比如:64K/128k/256k/512k/1024k,根据需求来决定使用哪个大小的块,如果使用过程块中空闲内存不足,可以新建内存块,以链表形式管理。
经过整合后,我将基础组件都增加了对内存池的支持,包括封装的数组容器(string/vector/hash)、线程、锁、timer等,在此基础之上,使用之前所介绍的线程池技术,同时增加对sock连接的复用管理,实现了一个对内存要求较低、可复用连接的HTTP实现方案(不过仅实现http的get/post能力),同时提供了一种文件缓存方案,使用该方案时,除了请求数据会占用内存空间,接收的数据都以文件形式存储在磁盘当中。经过一定量的测试,只需要4k内存开销,即可实现1次HTTP请求,并且如果对于不需要同时进行HTTP请求的场景,4K内存将不会增长,因为这4k内存将复用,同时sock连接将被保持,效率有明显提升.
此内存池方案同时增加对内存分配和释放的跟踪,以检测内存泄露问题.
后续资料逐步更新,包括源码,将同时奉上.
0 0
- 跨平台高效HTTP队列实现方案之内存池基础组件.
- 跨平台高效HTTP队列实现方案之线程池基础组件.
- bacula之内存池实现
- java基础之内存
- Java基础之内存
- java基础之内存分配
- php之内存管理基础
- 基础知识之内存管理基础
- Android基础之内存溢出
- Android基础之内存泄露
- 基础概念之内存对齐
- 服务端之内存池
- nginx源码分析之内存池实现原理
- MTK HTTP 协议之内存分配
- bada开发基础之内存管理
- J2SE基础夯实系列之内存堆栈
- 框架管理基础之内存映射
- Java基础之内存回收机制
- 数据分析师不是“数羊”的
- self.edgesForExtendedLayout=UIRectEdgeNone;
- 数据团队需要的六类角色
- DRP(三)——Servlet请求转发
- DHTML-----表格的创建和样式
- 跨平台高效HTTP队列实现方案之内存池基础组件.
- [安卓开发] Android 自己做双向手电筒 源代码
- 程序员的样子
- MySQL 解决数据导出问题:Using a password on the command line interface can be insecure.
- Android 项目的代码混淆,Android proguard 使用说明
- 十五个只有程序员会乐的事情
- 【翻新重写】WWDC 后苹果最新 App Store 审核条款!「内附最新开发者指南」
- Flink流计算编程--在WindowedStream中体会EventTime与ProcessingTime
- nginx反向代理及负载均衡(服务器负载,以后看)