zoukankan      html  css  js  c++  java
  • [nginx] nginx源码分析--内存管理

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

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

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

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

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

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

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

    数据结构, 见下图:

  • 相关阅读:
    C++中头文件包含的问题
    linux环境变量
    win32进程和线程
    断言
    win32中的常用类型转换
    可变形参
    #define
    CString与char*互相转化
    extern
    手机CPU和GPU厂商
  • 原文地址:https://www.cnblogs.com/hugetong/p/14714780.html
Copyright © 2011-2022 走看看