一、设计原则
(1)减少内存碎片
(2)减少向操作系统申请内存的次数
(3)降低各个模块的开发效率
二、源码结构
struct ngx_pool_s {
ngx_pool_data_t d;
size_t max;
ngx_pool_t *current;
ngx_chain_t ...
分类:
其他好文 时间:
2014-07-19 23:16:14
阅读次数:
258
裸Splay区间操作: 内存池+区间加减+区间翻转+插入+删除+维护最值SuperMemoTime Limit:5000MSMemory Limit:65536KTotal Submissions:8552Accepted:2801Case Time Limit:2000MSDescriptionY...
分类:
其他好文 时间:
2014-07-16 23:25:06
阅读次数:
195
1.静态内存,编译时申请,存储在栈,如基本数据类型。2.动态内存由一些没有名字,只有地址的内存块构成。那些内存块是在程序运行期间动态分配的。它们来自一个标准c++库替你管理的“大池子”(内存池),从内存池申请一些内存需要用new语句,他将根据你提供的数据类型分配一块大小适当的内存。你不必担心内存块的...
分类:
编程语言 时间:
2014-07-16 20:05:48
阅读次数:
190
目前我开发的一个服务器后台程序存在这么一个问题,由于我的程序要不断的收发消息,并做统计,统计用的是stl的多重map,在统计中会不断的往map里赛数据。但是每次统计后我都会调用clear()去释放内存,但是似乎并不奏效,仍然会有泄漏的现象。查资料,map的clear是将map内容清空,但是内存并不归还给系统,而是缓冲在内存池里以方便下次调用,有人提出,可以新建一个map,将两个map做swap操作...
分类:
其他好文 时间:
2014-07-14 11:15:23
阅读次数:
318
本系列以V1.4.1为蓝本。
在此版本中,内存分配分为:普通和内存池两种。
本篇介绍普通的内存分配,所有的函数在文件mem.c(本小结介绍的是L496-L518)。
1. 声明变量
(1) 内存大小变量
mem_size_t ptr, ptr2; 声明两个16位的无符号整型变量。
...
分类:
其他好文 时间:
2014-07-13 16:39:22
阅读次数:
227
上下文与全异步web服务器的关系请求上下文指在一个请求的处理过程中,把一些关键的信息保存下来的类似struct这样的结构体。每个http模块都可以有自己的上下文结构体,一般都是在刚开始处理请求时在内存池上分配它,之后当经由epoll、http框架再次调用到http模块的处理方法时,这个http模块可...
分类:
其他好文 时间:
2014-07-13 08:09:49
阅读次数:
218
这个问题确实比较基础,些这篇文章为了给自己一个总结,也算是一个笔记记录,争取做到最精简。结构体对齐关键词: “对齐系数”(也叫对齐模数):以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数 “对齐规则”:分两步,数据成员对齐,整体对齐: 1:数据...
分类:
其他好文 时间:
2014-07-07 18:42:00
阅读次数:
206
Redis与Memcached的比较.1.Memcached是多线程,而Redis使用单线程.2.Memcached使用预分配的内存池的方式,Redis使用现场申请内存的方式来存储数据,并且可以配置虚拟内存。3.Redis可以实现持久化,主从复制,实现故障恢复。4.Memcached只是简单的key...
分类:
其他好文 时间:
2014-07-01 20:34:13
阅读次数:
248
#include "common.h"#include "pool.h"#include static inline void *objmem_to_obj(void *objmem){return objmem + sizeof(pool_obj_head_t);}static inline vo...
分类:
其他好文 时间:
2014-06-27 21:24:59
阅读次数:
292