美文网首页
(二) nginx内存分析

(二) nginx内存分析

作者: 爱吃花栗鼠的猫 | 来源:发表于2015-10-16 09:22 被阅读319次

    内存控制的好,程序就稳定,一个好的内存设计,为一个牛逼的发动机提供资源。

    使用内存的时候,从ngx_pool_t中获取内存。

    不使用的时候,只需要销毁ngx_pool_t对象即可,相关联的内存都被释放完毕。

    也就是说ngx_pool_t对象就算一个内存的管家,你需要用的时候向它登记就行,不用操心申请啊,释放啊等操作,很方便。

    struct ngx_pool_s {
        ngx_pool_data_t       d;
        size_t                max;
        ngx_pool_t           *current;
        ngx_chain_t          *chain;
        ngx_pool_large_t     *large;
        ngx_pool_cleanup_t   *cleanup;
        ngx_log_t            *log;
    };
    
    ngx_create_pool(size_t size, ngx_log_t *log)
    

    创建一个初始节点大小为sizepool。并且size的大小必须小于等于NGX_MAX_ALLOC_FROM_POOL,且必须大于sizeof(ngx_pool_t)

    NGX_MAX_ALLOC_FROM_POOL大小为 (ngx_pagesize - 1),在x86上,ngx_pagesize大小为4096。
    之所以是4096,是因为寻址页面大小是4096,这个数值的设定可以照顾到大多数情况的内存使用情景,太大和太小都不是很适合。至于为何是这个数,应该是和处理器架构有关系。

    size的大小必须小于等于NGX_MAX_ALLOC_FROM_POOL,且必须大于sizeof(ngx_pool_t)。因为大了寻址寻不到白白浪费空间。


    nginx内存结构图

    相关文章

      网友评论

          本文标题:(二) nginx内存分析

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