网站首页 > 博客文章 正文
首先什么是内存池,为什么会有内存池,内存池解决了什么问题??
在nginx中每个http请求和每个tcp、udp都会去创建一个内存池,以后在处理过程中所有用到的内存都是从内存池中申请的;Nginx的内存池区分大内存块和小内存块,以一个内存页面为准,如果小于一个内存页面(getpagesize)则是小内存块,从内存池中直接申请,否则直接调用malloc去申请内存块;在释放内存的时候,nginx没有专门提供针对释放小块内存的函数,小块内存会在ngx_destory_pool 和 ngx_reset_pool的时候一并释放。
数据结构:
申请后的内存分配关系图:
内存池中维护两个链表,一个大块,一个小块
提前创建好后,缓解了,下次分配的时间,只需要简单的判断就可取出想要的内存块
调用posix_memalign( )成功时会返回size字节的动态内存,并且这块内存的地址是alignment的倍数。
参数alignment必须是2的幂,还是void指针的大小的倍数。返回的内存块的地址放在了memptr里面,函数返回值是0.
猜你喜欢
- 2024-12-01 利用nginx搭建RTMP视频点播、直播、HLS服务器
- 2024-12-01 Nginx:为什么高性能?Master&worker如何配合?负载均衡了解吗?
- 2024-12-01 Linux网络编程面试题--tcp和udp的区别
- 2024-12-01 为什么 NGINX 的 reload 命令不是热加载?
- 2024-12-01 Docker实战-使用NGINX实现4层的负载均衡
- 2024-12-01 Linux网络编程-UDP和TCP协议详解
- 2024-12-01 nginx严重级别安全漏洞:DNS解析器不按堆大小写入漏洞
- 2024-12-01 Nginx的10个使用场景 # 强化学习
- 2024-12-01 Nginx如何实现四层负载均衡
- 2024-12-01 nginx服务器-四层代理与七层代理概要及应用场景
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)