内存池可有效降低动态申请内存的次数,减少与内核态的交互,提升系统性能,减少内存碎片,增加内存空间使用率,避免内存泄漏的可能性,这么多的优点,没有理由不在系统中使用该技术。内存池分类:1、不定长内存池。典型的实现有apr_pool、obstack。优点是不需要为不同的数据类型创建不同的内存池,缺点是造...
分类:
其他好文 时间:
2014-09-23 01:54:23
阅读次数:
279
内存池可有效降低动态申请内存的次数,减少与内核态的交互,提升系统性能,减少内存碎片,增加内存空间使用率,避免内存泄漏的可能性,这么多的优点,没有理由不在系统中使用该技术。内存池分类:1、不定长内存池。典型的实现有apr_pool、obstack。优点是不需要为不同的数据类型创建不同的内存池,缺点是造...
分类:
其他好文 时间:
2014-09-23 01:53:23
阅读次数:
258
“碎片的内存”描述一个系统中所有不可用的空闲内存。这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用。这一问题通常都会发生,原因在于空闲内存以小而不连续方式出现在不同的位置。由于分 配方法决定内存碎片是否是一个问题,因此内存分配器在保证空闲资源可用性方面扮演着重要的角色。int...
分类:
其他好文 时间:
2014-09-15 00:52:37
阅读次数:
219
STL内存池机制,使用双层级配置器。第一级采用malloc、free,第二级视情况采用不同策略。这种机制从heap中要空间,可以解决内存碎片问题。
1.内存申请流程图
简要流程图如下。
2.第二级配置器说明
第二级配置器目的解决小型区块造成的内存碎片问题。
使用自由链表(free-list)技巧。主动将任何小额区块的内存需求量上调至8的倍数。如需求30,则...
分类:
编程语言 时间:
2014-09-04 10:31:59
阅读次数:
194
placement new的好处:
在已分配好的内存上进行对象的构建,构建速度快。
可以反复利用同一块已分配好的内存,有效的避免内存碎片问题。
建立对象数组时,能够调用带参数的构造函数。...
分类:
其他好文 时间:
2014-08-17 18:39:12
阅读次数:
190
背景我们都知道,对于一个高性能的服务器端程序来说,内存的使用非常重要。C++提供了new/delete来管理内存的申请和释放,但是对于小对象来说,直接使用new/delete代价比较大,要付出额外的空间和时间,性价比不高。另外,我们也要避免多次的申请和释放引起的内存碎片。一旦碎片到达一定程度,即使剩...
分类:
数据库 时间:
2014-08-11 17:11:22
阅读次数:
334
我们经常看到求 sizeof(A) 的值的问题,其中A是一个结构体,类,或者联合体。为了优化CPU访问和优化内存,减少内存碎片,编译器对内存对齐制定了一些规则。但是,不同的编译器可能有不同的实现,本文只针对VC++编译器,这里使用的IDE是VS2012。#pragma pack()是一个预处理,表示...
分类:
编程语言 时间:
2014-08-06 14:17:01
阅读次数:
234
【部署策略】 基于memcached的slab 和dump的内存管理方式,它产生的内存碎片比较少,不需要OS去做繁杂的内存回收,所以它对CPU的占用率那是相当的低。所以建议将它跟占用CPU较高 的WEB服务器一起使用来节省成本。当然如果你有大量的廉价PC,那用来专门做memcached服务器也不错....
分类:
Web程序 时间:
2014-08-04 17:09:57
阅读次数:
254
1、高性能:
a、内存池的设计,为一个多级链表结构,本身不负责内存的回收,减少内存碎片,提高内存的利用率,将多次向操作系统申请内存压缩为一次,减少向操作系统申请内存的次数,提高cpu资源的利用;
b、基于事件的master-worker异步处理。处理事件的机制是由事件分发进程加载事件处理模块来完成与传统将事件提交给handle-thread来处理的方式相比,减少了进程(线...
分类:
其他好文 时间:
2014-07-24 23:02:13
阅读次数:
222
一、设计原则
(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