[nginx] nginx源码分析–内存管理

  1. nginx的内存,都是内存池管理,创建一个内存池就malloc一块内存出来.

  2. 两个重要的地方会新建内存池, 一个新连接建立的时候, 一个是request创建的时候.

  3. 在内存池里申请内存的时候,就是一块挨着一块的按顺序用. 这种叫small. 如果比内存池的size还大的,就malloc,然后把它索引到large链表里,

large的链表头结构用small的方式申请.

  1. 由于频繁的申请, 每一个connect都要malloc, 可能会有性能问题. 这时候改进法案就是使用jemalloc或者tcmalloc.

另外, nginx这个内存池的设计初衷是为了防止泄露,连接结束时, 所以相关资源一下释放掉. 而且, nignx的人认为实时的malloc多性能影响不大,

参考这个讨论: https://www.ruby-forum.com/t/memory-pool/240348

数据结构, 见下图:

[nginx] nginx源码分析--内存管理

Original: https://www.cnblogs.com/hugetong/p/14714780.html
Author: toong
Title: [nginx] nginx源码分析–内存管理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543023/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球