# rpmalloc-analysis **Repository Path**: onetwoyi/rpmalloc-analysis ## Basic Information - **Project Name**: rpmalloc-analysis - **Description**: rpmalloc 源码剖析与多核并发图解 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-14 - **Last Updated**: 2026-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🚀 Rpmalloc 源码硬核剖析与核心机制重构 (精简教学版) > **极简、硬核、无损。** > 本项目对 `rpmalloc` 的庞大源码进行了**核心骨架抽离**,在**完全不损失任何性能**的前提下,为高并发内存分配器的学习者提供一个核心机制实现参考。 --- ## ⚡ 项目核心特色 (Why this repo?) 许多人面对原版 `rpmalloc` 几千行的工程代码望而却步,本项目旨在降低阅读源码的门槛: * **核心代码抽离**:砍掉一切工程冗余,整套项目仅保留 **`rpmalloc`**、**`rpfree`** 以及 **初始化** 3 个最核心的对外物理接口。从3000行代码变成 1250行代码 * **保留纯粹机制**:完整保留了 `rpmalloc` 赖以生存的核心内存池机制、Span/Page/Block 级拓扑、多线程完全隔离以及免自旋无锁链表 (Mailbox) 交互。 * **轻量化做减法**:去除了对学习核心机制毫无帮助的 `Huge` 缓存机制,避免学习者陷入工程细节泥潭(详细可阅读原版)。环境:Ubuntu 24.04.4 LTS + GCC 13.3.0(去除了原版的跨平台可移植性,x86-64 物理底层)。 * **性能完全无损**:由于底层的物理内存池结构、位运算对齐算法和无锁 CAS 路径完全基于原版高标准保留,经过虚拟机二核实测,**经虚拟机多线程压力测试,重构版吞吐性能(除Huge)与原版无明显差异**! --- ## 📂 仓库目录导读 * 📁 **1. 代码**:精炼、干净、带有中文深度物理级注释的重构版核心源码。 * 📁 **2. 图解**: * `01.图解_基础篇.png`:攻克多线程隔离、Heap/Span/Page 物理堆栈基础拓扑以及设计理念。 * `02.图解_进阶篇.png`:攻克获取SPAN PAGE的机制, 线程死亡时机制, 多核并发硬件理论及具体原子操作解释。 * 📁 **3. 学习过程**:记录攻克底座、死磕位运算逻辑的心路历程与推导草稿。 * 📊 **简单测试_性能对比.png**:高并发多线程压力下,精简版与原版、标准内存分配器的吞吐性能物理实测对比。 --- ## 🛠️ 编译与测试指南 (Quick Start) 本项目在 `1.代码/` 目录下提供了完整的测试源码。学习者可以使用 **GCC** 直接编译并运行性能测试,亲眼见证重构后的高并发吞吐实力。 ### 1. 编译并运行多线程及线程死亡测试 (main_5.c) gcc my_rpmalloc.c main_5.c -o test_main_5_mine -lpthread -O3 gcc rpmalloc.c main_5.c -o test_main_5_orig -lpthread -O3 ### 2. 编译并运行高并发跨线程释放性能测试 (main_6.c) gcc my_rpmalloc.c main_6.c -o test_main_6_mine -lpthread -O3 gcc rpmalloc.c main_6.c -o test_main_6_orig -lpthread -O3 上述的main_5.c 第13行开关 教学/原版,第38行 5是去除Huge,6是加上Huge ## ⚖️ 许可与使用条款 (License & Terms of Use) 本项目采用**双重授权**(详见根目录 **LICENSE** 文件): 1. **代码部分**:严格遵守原作者的 MIT 许可证。 2. **图解与剖析文档**:采用 **CC BY-NC-SA 4.0 (署名-非商业性使用-相同方式共享)** 国际协议保护。 一共只在Github和Gitee平台记录 GitHub:https://github.com/YQwQ/rpmalloc-analysis Gitee:https://gitee.com/onetwoyi/rpmalloc-analysis