Nginx内存池
FuzhouJiang
专注后端、C/C++开发的菜鸟,相信日拱一卒、功不唐捐。欢迎各位对博文批评指正,互相学习
展开
-
Nginx内存池移植为C++版本
这个项目是在阅读nginx内存池源码后,将其代码重新用C++面向对象的方式实现,大体与源码相同,旨在加深对nginx内存池的理解。// 内存池实际的可分配内存空间 p -> max =(size < NGX_MAX_ALLOC_FROM_POOL)?pool = p;return p;u_char * m;// 到下一个小块内存池尝试 } while(p);u_char * m;原创 2023-05-17 15:12:59 · 187 阅读 · 0 评论 -
Nginx内存池(六)——内存池源码编译测试
将测试代码文件移动到nginx-1.12.2根目录下,然后执行相应的编译指令。删掉 (-Werror,它要求GCC将所有的警告当成错误进行处理),所以析构时先调用func2()在调用fun1()清理操作对象的添加函数。原创 2023-05-17 14:52:02 · 160 阅读 · 0 评论 -
Nginx内存池(五)——外部资源释放和内存池销毁
假如内存中有存储指向动态开辟内存的指针,调用ngx_pfree只是简单的释放了大块内存的空间,而其中指针指向的内存空间并没有被释放,这会导致内存泄漏。为此nginx内存池提供了一个用户可自己设置的回调)来进行这一类资源的释放,这个清理资源操作对象可能有多个用链表组织,内存图示如下。原创 2023-05-17 14:40:47 · 310 阅读 · 0 评论 -
Nginx内存池(四)——重置函数和小块内存回收策略
http服务器(nginx)返回响应后需等待60s,60s之内客户端又发来请求,重置这个时间,否则60s之内没客户端发来响应,ngnix就主动断开连接,此时nginx可调用。就主动断开TCP链接(http 1.1 keep-alive:60s)服务器,客户端发起一个request请求,到达。中只有释放大块内存而没有释放小块内存的函数;Ngnix则是只提供了内存池重置函数。,等待下一次该客户端请求。原因是应用场景的问题,原创 2023-05-17 14:32:43 · 305 阅读 · 0 评论 -
Nginx内存池(三)——大块内存分配分配释放
到后面再创建大块内存时可以。,可查看分配函数中M1代码处。原创 2023-05-17 14:25:11 · 133 阅读 · 0 评论 -
Nginx内存池(二)——小块内存分配
如果内存池空闲空间大于需要分配的内存大小,则可以直接分配,否则进入到下一个内存池进行分配,若都没有则进入。可以看出除第一个内存池外,后面内存池只需要占额外的。原创 2023-05-16 16:02:56 · 117 阅读 · 0 评论 -
Nginx内存池(一)——类型和重要函数定义
类型定义重要函数创建内存池剖析原创 2023-05-16 15:52:10 · 96 阅读 · 0 评论