当前位置: 首页 > news >正文

九浅一深Jemalloc5.3.0 -- ②浅*size class

目前市面上有不少分析Jemalloc老版本的博文,但5.3.0却少之又少。而且5.3.0的架构与之前的版本也有较大不同,本着“与时俱进”、“由浅入深”的宗旨,我将逐步分析Jemalloc5.3.0的实现。

另外,单讲实现代码是极其枯燥的,我将尽量每个原理知识点都用一个简简单单的小程序引出来,这样便于大家测试和上手调试。另外,还会用GDB打印数据结构,方便理解当时的状态。

 无论jemalloc还是ptmalloc不会用户申请多少字节内存就分配多少,而是多分配一点,比如当用户要分配10个字节内存时实际会分配16字节,当用户要分配12个字节内存时实际也会分配16字节,要求20字节则会分配32字节。

 写个简单的代码,多次分配10个字节,计算返回的地址之差看看是多少?

//gcc malloc_diff.c `jemalloc-config --libdir`/libjemalloc.a `jemalloc-config --libs` -g
#include <malloc.h>
#include <stdlib.h>
#include <string.h>int main(int argc, char* argv[])
{void* p;for(int i=0;i<100;i++) //tcache bin{p=malloc(10);printf("addr of ith allocation:%p\n", p);}return 0;
}

正如预期,两两相差16。(程序刚开始两次分配相差16,但时间长了可就不一定了)。侧面印证了实际分配了16字节。

这个概念在jemalloc里叫size classes, 用户请求都会被round up到某个稍大一点的size, 那么jemalloc 5.3.0里都有哪些size class哪?偷个懒,直接用GDB把size表打出来。

并不是只有50个,在我的64位机器上其实有232个(SC_NSIZES)。

前36个被归类为small size class, 后面的归类为large size class. 以前还有huge, 但现在没有了。

sz_index2size_tab的初始化过程如下:

读者如有兴趣,可以推一推怎么得出的各个值。

有两个函数能实现index与size的互转:

相关文章:

九浅一深Jemalloc5.3.0 -- ②浅*size class

目前市面上有不少分析Jemalloc老版本的博文&#xff0c;但5.3.0却少之又少。而且5.3.0的架构与之前的版本也有较大不同&#xff0c;本着“与时俱进”、“由浅入深”的宗旨&#xff0c;我将逐步分析Jemalloc5.3.0的实现。 另外&#xff0c;单讲实现代码是极其枯燥的&#xff0c;…...

JavaScript——属性的增删改查

目录 任务描述 相关知识 属性的获取 方式一 方式二 属性的修改与新增 删除属性 编程要求 任务描述 Luma Restaurant 以前的财务人员在统计销售额的时候不小心把数据弄错了&#xff0c;现在的财务人员想通过一个 JavaScript 函数方便的修改数据&#xff0c;并署上自己的…...

51单片机第15步_串口多机通讯使用CRC8校验

本章重点介绍串口多机通讯使用CRC8校验。 数据格式:"$123xxxx*crc8\r\n"; 如:"$1234567890ABCDEF*06\r\n" 如:"$1231234567890*31\r\n" crc8是CRC校验值,为十六进制的ASCII码,不包含$和校验值前面的那个* #include <REG51.h> //包含…...

WPF----进度条ProgressBar(渐变色)

ProgressBar 是一种用于指示进程或任务的进度的控件&#xff0c;通常在图形用户界面&#xff08;GUI&#xff09;中使用。它提供了一种视觉反馈&#xff0c;显示任务的完成程度&#xff0c;帮助用户了解任务的进展情况。 基本特性 Minimum 和 Maximum 属性&#xff1a; 这些属…...

Apipost接口测试工具的原理及应用详解(四)

本系列文章简介&#xff1a; 随着软件行业的快速发展&#xff0c;API&#xff08;应用程序编程接口&#xff09;作为不同软件组件之间通信的桥梁&#xff0c;其重要性日益凸显。API的质量直接关系到软件系统的稳定性、性能和用户体验。因此&#xff0c;对API进行严格的测试成为…...

【图论】200. 岛屿问题

200. 岛屿问题 难度&#xff1a;中等 力扣地址&#xff1a;https://leetcode.cn/studyplan/top-100-liked/ 问题描述 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&…...

AI学习指南机器学习篇-随机森林的优缺点

AI学习指南机器学习篇-随机森林的优缺点 引言 机器学习是人工智能领域的重要分支&#xff0c;其中随机森林(Random Forest)算法以其高性能和广泛应用而备受瞩目。然而&#xff0c;就像任何其他算法一样&#xff0c;随机森林也有其优缺点。本文将深入探讨随机森林算法的优势和…...

基于boost::beast的http服务器(上)

文章目录 1.beast网落库介绍2.相关类及api3.异步读写的处理3.1异步写案例3.2异步读案例 1.beast网落库介绍 Beast网络库是一个基于Boost库的C网络库&#xff0c;特别用于开发高性能的网络应用程序。它提供了一组易于使用的API&#xff0c;主要用于处理HTTP和WebSocket协议&…...

深度学习之近端策略优化(Proximal Policy Optimization,PPO)

PPO(Proximal Policy Optimization,近端策略优化)是深度强化学习中的一种算法,属于策略梯度方法中的一种。PPO通过优化策略来最大化累积奖励,具有稳定性好、易于调参等优点,是目前广泛应用的一种深度强化学习算法。下面介绍PPO的基本原理和流程。 PPO基本原理 PPO算法的…...

用pycharm进行python爬虫的步骤

使用 pycharm 进行 python 爬虫的步骤&#xff1a;下载并安装 pycharm。创建一个新项目。安装 requests 和 beautifulsoup 库。编写爬虫脚本&#xff0c;包括获取页面内容、解析 html 和提取数据的代码。运行爬虫脚本。保存和处理提取到的数据。 用 PyCharm 进行 Python 爬虫的…...

重写功能 rewrite

Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求&#xff0c;此功能依靠 PCRE(perl compatible regular expression)&#xff0c;因此编译之前要安装PCRE库&#xff0c;rewrite是nginx服务器的重要功能之 一&#xff0c;用于实现URL的重写&#xff0c;URL的…...

ISO19110操作要求类中/req/operation/operation-attributes的详细解释

/req/operation/operation-attributes 要求: 只有要素属性&#xff08;feature attributes&#xff09;可以通过‘observesValueOf’、‘triggeredByValuesOf’或‘affectsValuesOf’关联角色与要素操作&#xff08;feature operations&#xff09;关联。 具体解释 定义 要…...

访客(UV)、点击量(PV)、IP、访问量(VV)概念

1、https://www.cnblogs.com/QingPingZm/articles/13855808.htmlhttps://www.cnblogs.com/QingPingZm/articles/13855808.html...

C++系统编程篇——Linux第一个小程序--进度条

&#xff08;1&#xff09;先引入一个概念&#xff1a;行缓冲区 \r和\n \r表示回车 \n表示回车并换行 ①代码一 #include<stdio.h> #include<unistd.h> int main()…...

一个中文和越南语双语版本的助贷平台开源源码

一个中文和越南语双语版本的助贷平台开源源码。后台试nodejs。 后台 代理 前端均为vue源码&#xff0c;前端有中文和越南语。 前端ui黄色大气&#xff0c;逻辑操作简单&#xff0c;注册可对接国际短信&#xff0c;可不对接。 用户注册进去填写资料&#xff0c;后台审批&…...

【游戏引擎之路】登神长阶(五)

5月20日-6月4日&#xff1a;攻克2D物理引擎。 6月4日-6月13日&#xff1a;攻克《3D数学基础》。 6月13日-6月20日&#xff1a;攻克《3D图形教程》。 6月21日-6月22日&#xff1a;攻克《Raycasting游戏教程》。 6月23日-6月30日&#xff1a;攻克《Windows游戏编程大师技巧》。 …...

FireAct:使用智能体(agent)微调大语言模型

1.概述 近年来,针对语言模型(LMs)的研究致力于探索其与外部工具或环境互动的能力,以推进新型语言代理的发展。此类代理具备从环境反馈中汲取新知识、通过语言推理进行连续决策,以及借助自我反思提升任务解决能力的能力。工业界的进展,如ChatGPT插件,凸显了语言代理在实际…...

20240626让飞凌的OK3588-C开发板在相机使用1080p60分辨率下预览

20240626让飞凌的OK3588-C开发板在相机使用1080p60分辨率下预览 2024/6/26 15:15 4.2.1 全编译测试 在源码路径内&#xff0c;提供了编译脚本 build.sh&#xff0c;运行该脚本对整个源码进行编译&#xff0c;需要在终端切换到解压 出来的源码路径&#xff0c;找到 build.sh 文件…...

python数据分析——数据分类汇总与统计

数据分类汇总与统计 前言一、Groupby分类统计语法按列分组示例一示例二示例三 遍历各分组示例 使用字典和Series分组示例 使用函数分组示例 二、数据聚合groupby的聚合函数示例一示例二 逐列及多函数应用示例一示例二 返回不含行索引的聚合数据示例 三、一般性的“拆分-应用-合…...

iOS17系统适配

iOS17 新功能 文章目录 iOS17 新功能iOS17支持哪几款机型Xcode15新特性iOS17-开发适配指南 横屏待机 在iOS 17中&#xff0c;还带来了横屏待机功能&#xff0c;苹果将这个新功能命名为“Standby”模式&#xff0c;为 iPhone 带来了全新的玩法。iPhone启用之后&#xff0c;默认情…...

将Windows 10打造成局域网精准时钟源:NTP服务器配置全攻略

1. 为什么需要局域网NTP服务器&#xff1f; 最近在帮朋友调试一个实验室的监控系统时&#xff0c;遇到了一个典型的时间不同步问题。十几台设备记录的视频时间戳相差从几秒到几分钟不等&#xff0c;排查故障时简直像在玩拼图游戏。这种场景在中小型办公网络、实验室环境特别常见…...

如何使用铜钟音乐打造纯净无广告的个人听歌空间

如何使用铜钟音乐打造纯净无广告的个人听歌空间 【免费下载链接】tonzhon-music 铜钟 (Tonzhon.com): 免费听歌; 没有直播, 社交, 广告, 干扰; 简洁纯粹, 资源丰富, 体验独特&#xff01;(密码重置功能已回归) 项目地址: https://gitcode.com/GitHub_Trending/to/tonzhon-mus…...

java新手福音:用快马ai生成渐进式八股文学习项目,轻松入门核心知识

作为一个Java新手&#xff0c;刚开始接触"八股文"这个概念时&#xff0c;我完全摸不着头脑。直到在InsCode(快马)平台上尝试了他们的Java学习项目生成功能&#xff0c;才发现原来枯燥的理论知识可以变得这么生动有趣。 渐进式学习路径设计 这个项目最让我惊喜的是它的…...

嵌入式系统命令模式实现撤销功能

嵌入式误操作救星&#xff1a;基于命令模式的撤销方案设计与实现1. 项目概述在嵌入式系统开发中&#xff0c;配置参数管理是一个常见但容易出错的场景。当用户误操作导致重要配置被重置时&#xff0c;如何快速恢复到之前的状态成为系统设计的关键需求。本文介绍一种基于命令模式…...

告别手动复制!Mac版PowerPoint备注导出神器:自定义AppleScript脚本全解析

Mac版PowerPoint备注导出神器&#xff1a;AppleScript脚本开发实战指南 每次在会议前整理PPT备注时&#xff0c;你是否也厌倦了手动复制粘贴的繁琐操作&#xff1f;作为一位长期使用Mac和PowerPoint的资深用户&#xff0c;我深刻理解这种效率低下的痛苦。本文将带你深入探索如何…...

Wandb账号串线了?手把手教你排查和修复‘实验记录跑到别人账户’的坑

Wandb账号串线排查指南&#xff1a;如何避免实验记录跑到他人账户 实验室的GPU服务器指示灯闪烁着&#xff0c;你刚提交的模型训练任务在终端显示"Run completed successfully"&#xff0c;但刷新了十几次Wandb面板——那些期待中的损失曲线和评估指标依然不见踪影。…...

DmtrPots电位器库:嵌入式模拟输入抗抖动与高鲁棒处理方案

1. DmtrPots电位器库技术解析&#xff1a;面向嵌入式系统的高鲁棒性模拟输入处理方案1.1 库定位与工程价值DmtrPots是专为Arduino及Teensy平台设计的电位器&#xff08;Potentiometer&#xff09;专用信号处理库&#xff0c;由Dmtr.org团队开发并维护。该库并非简单的analogRea…...

Python AI推理卡顿元凶锁定:Cuvil IR图层分析法,3分钟定位动态shape引发的kernel重编译瓶颈

第一章&#xff1a;Cuvil编译器在Python AI推理中的核心定位与价值Cuvil编译器并非传统意义上的通用语言编译器&#xff0c;而是专为Python生态中AI模型推理阶段深度优化的静态编译基础设施。它直接作用于PyTorch/TensorFlow导出的TorchScript或ONNX中间表示&#xff0c;将高层…...

告别LiveCharts实时绘图丢帧:深入剖析WPF数据绑定与渲染优化的五个关键点

告别LiveCharts实时绘图丢帧&#xff1a;深入剖析WPF数据绑定与渲染优化的五个关键点 在金融交易系统、工业监控仪表盘等实时数据可视化场景中&#xff0c;WPF开发者常会遇到一个棘手问题&#xff1a;当数据更新频率超过每秒2-3次时&#xff0c;LiveCharts图表开始出现明显的帧…...

Cinema 4D 2026液体模拟实战:如何用新功能打造逼真水流效果(附参数设置)

Cinema 4D 2026液体模拟实战&#xff1a;如何用新功能打造逼真水流效果&#xff08;附参数设置&#xff09; 在三维动画和特效设计领域&#xff0c;液体模拟一直是技术难度最高、计算资源消耗最大的环节之一。Cinema 4D 2026针对这一核心功能进行了重大升级&#xff0c;特别是改…...