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

【TDengine源码阅读】taosMemoryDbgInit函数

2025年5月25日,周日上午


int32_t taosMemoryDbgInit() {
#if defined(LINUX) && !defined(_ALPINE) && !defined(TD_ASTRA)int ret = mallopt(M_MMAP_THRESHOLD, 0);if (0 == ret) {return TAOS_SYSTEM_ERROR(ERRNO);}return 0;
#elsereturn TSDB_CODE_FAILED;
#endif
}

这段代码是TDengine数据库的内存调试初始化函数,主要用于在Linux环境下(非Alpine Linux和TD_ASTRA系统)通过mallopt调整内存分配策略。Alpine Linux使用musl库而非glibc,可能不支持此配置。

核心功能解析

mallopt(M_MMAP_THRESHOLD, 0)  

作用:将mmap分配内存的阈值设为0,强制所有内存分配使用brk/sbrk而非mmap。

目的:用于追踪内存泄漏(结合Valgrind等工具时需统一分配方式)。

拓展:除了用于调试内存泄漏外,禁用mmap还能避免频繁的mmap系统调用(默认阈值128KB),减少系统调用开销,提升小内存分配的效率,但可能增加内存碎片,适合频繁分配小内存的场景。。

返回值处理

若mallopt失败,通过TAOS_SYSTEM_ERROR(ERRNO)返回系统错误码。mallopt成功则返回0。

非Linux环境直接返回TSDB_CODE_FAILED。

相关文章:

  • Vue 3 (2) 模块化开发入门教程(ESM方式)
  • 深入解析MongoDB WiredTiger存储引擎:原理、优势与最佳实践
  • 【计算机网络】基于UDP进行socket编程——实现服务端与客户端业务
  • 线性代数之张量计算,支撑AI算法的数学原理
  • 历年复旦大学保研上机真题
  • MADS-box编码基因Tunicate1通过增加玉米果穗上方的叶片数量正向调控玉米产量。
  • 【c++11】智能指针 -- 摆脱内存困扰,现代编程的智能选择
  • 2025.5.19-2025.5.25学习周报
  • 58.在新建对话的空白页面添加一些引导性话语
  • 【Web前端】ECMAScript 6基础学习
  • [Java恶补day6] 15. 三数之和
  • nginx对webdav支持不好的解决办法
  • 浅谈ggplot2图表美化~
  • 【电路笔记】-音频变压器(Audio Transformer)
  • 云原生安全:网络协议TCP详解
  • 云原生安全之HTTP协议:从基础到实战的安全指南
  • 计算机网络学习(七)——IP
  • 竞赛小算法总结(一):位运算,因数分解和“马拉车”算法含代码详解
  • BUUCTF——RCE ME
  • 基于OpenCV 的人体姿态估计
  • 国内对企业网站开发的研究/免费的网络营销方式
  • 组织建设是什么意思/seo搜索引擎优化人才
  • c 做网站看什么书/培训网站模板
  • 公司首页模板/网站如何seo推广
  • 企业门户网站设计方案/北京网站优化多少钱
  • 武汉有没有做网站的/百度快照有什么用