网站首页 > 技术教程 正文
首先什么是内存池,为什么会有内存池,内存池解决了什么问题??
在nginx中每个http请求和每个tcp、udp都会去创建一个内存池,以后在处理过程中所有用到的内存都是从内存池中申请的;Nginx的内存池区分大内存块和小内存块,以一个内存页面为准,如果小于一个内存页面(getpagesize)则是小内存块,从内存池中直接申请,否则直接调用malloc去申请内存块;在释放内存的时候,nginx没有专门提供针对释放小块内存的函数,小块内存会在ngx_destory_pool 和 ngx_reset_pool的时候一并释放。
数据结构:
申请后的内存分配关系图:
内存池中维护两个链表,一个大块,一个小块
提前创建好后,缓解了,下次分配的时间,只需要简单的判断就可取出想要的内存块
调用posix_memalign( )成功时会返回size字节的动态内存,并且这块内存的地址是alignment的倍数。
参数alignment必须是2的幂,还是void指针的大小的倍数。返回的内存块的地址放在了memptr里面,函数返回值是0.
猜你喜欢
- 2024-10-15 一文搞定分布式文件系统FastDFS(分布式文件存储dfs)
- 2024-10-05 Nginx系列:数据压缩(nginx 压缩)
- 2024-10-05 Nginx 一个牛X的功能,流量拷贝(nginx 流量转发)
- 2024-10-05 nginx.ngx_http_memcached_module详解
- 2024-10-05 ngxtop:在命令行实时监控 Nginx 的神器
你 发表评论:
欢迎- 最近发表
-
- 阿里P8大佬总结的Nacos入门笔记,从安装到进阶小白也能轻松学会
- Linux环境下,Jmeter压力测试的搭建及报错解决方法
- Java 在Word中合并单元格时删除重复值
- 解压缩软件哪个好用?4款大多数人常用的软件~
- Hadoop高可用集群搭建及API调用(hadoop3高可用)
- lombok注解@Data没有toString和getter、setter问题
- Apache Felix介绍(apache fineract)
- Spring Boot官方推荐的Docker镜像编译方式-分层jar包
- Gradle 使用手册(gradle详细教程)
- 字节二面:为什么SpringBoot的 jar可以直接运行?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)