网络小结6

使用私有堆的原因
1、避免和Default Heap的new 、delete操作符同步,提高性能

2、分配的内存大小是固定的,减少内存空洞


http://highscalability.com/blog/2013/5/13/the-secret-to-10-million-concurrent-connections-the-kernel-i.html

http://www.kegel.com/c10k.html


复制一段评论:
nginx的内存池设计非常巧妙得利用了HTTP短连接的特性,为每一个HTTP请求分配一个内存块,当HTTP连接保持时,这个内存块只分配不释放,当HTTP断开时,释放整块大内存,由于HTTP基本上连接时间都是非常短的,所以不可能会出现内存池把整个内存沾满的情况
memcached的内存池主要是针对键值对的特性进行优化的,但实现方式和nginx完全不同,这个我没有仔细研究,具体特性不详

STL的二级分配器也是一种属于只分配不释放的内存池,但是它只针对于小雨128bytes的小块内存申请和释放,大于128bytes的内存申请还是直接调用malloc的。在使用STL过程中,默认是关闭二级分配器,如果真要使用,要通过宏来进行打开该功能。但是用这个分配器要小心,如果你申请了大量的小块内存,有可能占满机器的内存的话,STL就有可能造成整个系统内存不足了,因为它不释放!但性能还是非常强悍的。

你可能感兴趣的:(网络小结6)