美文网首页
Nginx的内存池设计

Nginx的内存池设计

作者: 吕艳凯 | 来源:发表于2019-11-27 18:08 被阅读0次

        为了避免出现内存碎片、减少向操作系统申请内存的次数、降低各个模块的开发复杂度,Nginx设计了简单的内存池。这个内存池没有很复杂的功能:通常它不负责回收内存池中已经分配出的内存。这种内存池最大的优点在于:把多次向系统申请内存的操作整合成一次,这大大减少了CPU资源的消耗,同时减少了内存碎片。因此,通常每一个请求都有一个这种简易的独立内存池(Nginx为每一个TCP连接都分配了1个内存池,而在第10章和第11章,并且HTTP框架为每一个HTTP请求又分配了1个内存池),而在请求结束时则会销毁整个内存池,把曾经分配的内存一次性归还给操作系统。这种设计大大提高了模块开发的简单性(在开发HTTP模块时,申请内存后都不用关心它释放的问题),而且因为分配内存次数的减少使得请求执行的时延得到了降低,同时,通过减少内存碎片,提高了内存的有效利用率和系统可处理的并发连接数,从而增强了网络性能。

相关文章

  • Nginx的内存池设计

    为了避免出现内存碎片、减少向操作系统申请内存的次数、降低各个模块的开发复杂度,Nginx设计了简单的内存池...

  • nginx内存池

    nginx内存池 拿来主义:https://www.cnblogs.com/xiekeli/archive/201...

  • 内存池的实现(服务器使用)

    内存池的实现 1 设计思路内存池的实现 2 实际例子 apache

  • Per-Class allocator(1)

    小型内存池设计 内存池设计思路 降低malloc调用次数为了减少malloc的次数,考虑能否先统一malloc一大...

  • C++内存管理(3)—重载

    应用程序的设计中,我们所说的内存管理就是将系统要处理的内存分配和释放接管过来,内存池是常用的一种设计思路。内存池是...

  • nginx 双向链表

    ngx_queue_t双向链表是Nginx提供的轻量级链表容器,它与Nginx的内存池无关,因此,这个链表将不会负...

  • 内存池的一些思考与总结

    allocate需要如下需求: 如何设计内存池; 如何设计字节对齐; 如何设计统计内存使用情况;(待完成) 如何设...

  • [nginx 源码走读] 内存池

    内存池原理:内存池预申请一块比较大的连续内存空间,当外部向内存池申请内存分配时,内存池从连续内存空间中,划分一部分...

  • nginx源码分析-内存池

    介绍 (Memory Pool)是一种内存分配方式。通常我们习惯直接使用new、malloc等API申请分配内存,...

  • Nginx 内存池一行代码的分析 -- 对齐

    在看 Nginx 内存池实现的时候,在 ngx_slab_init 函数的实现中最后有一个内存对齐的操作: 其中p...

网友评论

      本文标题:Nginx的内存池设计

      本文链接:https://www.haomeiwen.com/subject/zchmwctx.html