网站首页 > 精选教程 正文
首先什么是内存池,为什么会有内存池,内存池解决了什么问题??
在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-06 Java扩展Nginx之七:共享内存 java线程共享内存
- 2024-10-06 详解Nginx中基本的内存池初始化配置
- 2024-10-06 浅谈linux下进程最大数、最大线程数、进程打开的文件数
- 2024-10-06 内存问题探微 内存有问题的故障现象有什么
- 2024-10-06 Nginx的内存管理的深入理解,出色的程序员必掌握
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)