[nginx] nginx源码分析–内存管理

  1. nginx的内存,都是内存池管理,创建一个内存池就malloc一块内存出来.

  2. 两个重要的地方会新建内存池, 一个新连接建立的时候, 一个是request创建的时候.

  3. 在内存池里申请内存的时候,就是一块挨着一块的按顺序用. 这种叫small. 如果比内存池的size还大的,就malloc,然后把它索引到large链表里,

large的链表头结构用small的方式申请.

  1. 由于频繁的申请, 每一个connect都要malloc, 可能会有性能问题. 这时候改进法案就是使用jemalloc或者tcmalloc.

另外, nginx这个内存池的设计初衷是为了防止泄露,连接结束时, 所以相关资源一下释放掉. 而且, nignx的人认为实时的malloc多性能影响不大,

参考这个讨论: https://www.ruby-forum.com/t/memory-pool/240348

数据结构, 见下图:

[nginx] nginx源码分析--内存管理

Original: https://www.cnblogs.com/hugetong/p/14714780.html
Author: toong
Title: [nginx] nginx源码分析–内存管理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543023/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • redis篇

    点赞再看,养成习惯,微信搜索「 小大白日志」关注这个搬砖人。 文章不定期同步公众号,还有各种一线大厂面试原题、我的学习系列笔记。 数据结构 应用场景 string 普通的键值对存储…

    Java 2023年6月8日
    063
  • 类与对象(一)

    类和对象之间的关系 类是对象的设计图,对象是类的实体 类是对象的模板,对象是类的实例 设计的基本步骤 发现类,根据对象去发现类 找出属性(名词),根据对象的共同属性 找出行为(动词…

    Java 2023年6月6日
    089
  • Java高并发教程:Java NIO简介

    Java高并发教程:Java NIO Java NIO Java NIO 全程未 Java New IO类库,目的是让Java支持非阻塞IO(Non-Block IO),故很多人也…

    Java 2023年5月29日
    066
  • DM5加密的工具类

    代码: import org.springframework.security.crypto.password.PasswordEncoder; import java.math….

    Java 2023年6月13日
    064
  • Spring Boot入门系列(十五)Spring Boot 开发环境热部署

    在实际的项目开发过中,当我们修改了某个java类文件时,需要手动重新编译、然后重新启动程序的,整个过程比较麻烦,特别是项目启动慢的时候,更是影响开发效率。其实Spring Boot…

    Java 2023年5月30日
    071
  • java单例的几种实现方法

    java单例的几种实现方法: 方式1: public class Something { private Something() {} private static class L…

    Java 2023年5月29日
    071
  • Elasticsearch—DSL搜索实践

    POST http://192.168.2.223:9200/shop/_mapping { "properties": { "id": {…

    Java 2023年6月13日
    076
  • ReentrantLock的原理解析

    重入锁(ReentrantLock)是一种可重入无阻塞的同步机制。性能同synchronized接近(老版本jdk中性能很差)。 下面重点看下常用的lock()和unlock()方…

    Java 2023年6月6日
    071
  • redis删除缓存时遇到的问题

    一、redis查询key的方式 redis常用两种方式用于key的精确/模糊匹配 1. KEYS pattern keys pattern用于匹配pattern所有key,会返回当…

    Java 2023年6月13日
    0100
  • Java并发

    Java并发 JAVA技术交流群:737698533 CAS compare and swap 比较并交换,cas又叫做无锁,自旋锁,乐观锁,轻量级锁 例如下面的代码,如果想在多线…

    Java 2023年6月6日
    073
  • Java8 日期时间API

    一、转换 1、与字符串 //LocalDateTime 转 字符串 String str = DateTimeFormatter.ofPattern("yyyy-MM-d…

    Java 2023年6月5日
    075
  • JDK的下载、安装及环境变量的配置

    官网下载 JDK : 安装JDK: 双击运行下载的 jdk-8u25-windows-i586.exe即可。 假设安装目录为:D:\Program Files (x86)\Java…

    Java 2023年5月30日
    0100
  • 知乎问题:.NET AOT编译后能替代C++吗?

    标题上的Native库是指:Native分为静态库( (2)Remobjects Elements (https://www.remobjects.com/elements/) 收…

    Java 2023年6月5日
    0105
  • Elasticsearch 入门实战(4)–Java Low Level REST Client 使用

    本文主要介绍 Elasticsearch Java Low Level REST Client 的使用,相关的环境及软件信息如下:CentOS 7.6.1810、Java 1.8….

    Java 2023年6月16日
    079
  • Spring整体架构

    Spring框架是一个分层架构,它包含一些列的功能要素,并被分为大约20个模块,如图1-1所示。 这些模块被总结为以下几部分: 1.Core Container Core Cont…

    Java 2023年6月5日
    071
  • Hexo 博客安装 Fluid 主题

    一.主题 使用 hexo 推荐选择一款自己喜欢的主题,主题带有一些额外的功能适配,不需要自己去做,比如评论、友链、访问统计。可以浏览官方网站来选择自己喜欢的主题:https://h…

    Java 2023年6月9日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球