内存碎片产生原因及解决方法

article/2025/9/25 1:27:58

文章目录

  • 1、现象描述
  • 2、原因分析
  • 3、解决方法


1、现象描述

  • 某些应用程序频繁调用 malloc函数申请内存空间,且申请空间的大小差别比较大,使用完成后通过 free函数释放内存空间,但内存空间依然缓存在glibc中,没有归还操作系统,导致系统内存不足。

2、原因分析

内存空间分配

Glibc中进程的内存分配由两个系统调用完成: brk 和 mmap:

  • brk 是将数据段(.data)的最高地址指针 _edata 往高地址推; brk 分配的内存需要等到高地址内存释放以后才能释放
    假设先后通过 brk 申请了A和B两块内存,在B释放之前, A是不可能释放的,仍然被进程占用,通过TOP查看疑似“内存泄露”。
  • mmap 是在进程的虚拟地址空间中申请一块空闲的空间。 mmap 分配的内存由 munmap 释放,内存释放时将立即归还操作系统。

默认情况下,大于等于128KB的内存分配会调用 mmap/mummap,小于128KB的内存请求调用 brk,但可以通过修改M_MMAP_THRESHOLD 值来调整。
另外, Glibc2.29有一个新特性: M_MMAP_THRESHOLD 可以动态调整。
M_MMAP_THRESHOLD的值在128KB到32MB(32位机)或者64MB(64位机)之间动态调整,如:当申请并释放一个大小为2MB的内存后, M_MMAP_THRESHOLD的值被调整为2M到2M + 4K之间的一个值。因此,当应用程序中申请的内存空间数量多,且先后申请的内存空间的大小变化比较大时,再申请一段大的内存后, M_MMAP_THRESHOLD的值被调大,后续的内存申请空间大小 < M_MMAP_THRESHOLD时将使用 brk 申请,而 brk 需要等到高地址内存释放以后,低地址内存才能释放。当应用程序没有释放高地址内存时,就导致大量低地址内存空间不能及时释放,从而产生“内存空洞”,导致系统内存不足。

3、解决方法

  • 进程启动时,使用 int mallopt(int param, int value) 函数显式地设置 M_MMAP_THRESHOLD 的值为128K,关闭M_MMAP_THRESHOLD动态调整特性【图1-1】
  • 优化应用程序中内存管理方式,不要频繁申请、释放内存空间,减少内存碎片。

【图1-1】
M_MMAP_THRESHOLD



http://chatgpt.dhexx.cn/article/hULSoe29.shtml

相关文章

内存碎片:理解、应用场景和防止措施

目录 摘要1. 引言2. 内存碎片的概念3. 内存碎片的产生原因4. 应用场景4.1 应用场景一&#xff1a;长时间运行的服务器4.2 应用场景二&#xff1a;嵌入式系统 5. 预防和处理内存碎片6. 示例代码&#xff1a;生成内存碎片7. 总结 摘要 本文旨在向初学者详细介绍内存碎片的概念、…

内存碎片产生原因及解决办法

来源&#xff1a;知乎 链接&#xff1a;https://www.zhihu.com/question/51836333/answer/145693402 内存碎片通常分为内部碎片和外部碎片&#xff1a; 1. 内部碎片是由于采用固定大小的内存分区&#xff0c;当一个进程不能完全使用分给它的固定内存区域时就产生了内部碎…

POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 与其他的商业数据库在HTAP的异同点(译)...

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

TiDB HTAP

TiDB 数据库 HTAP 概述 HTAP技术 OLAP和OLTP带来了多副本的问题。 HTAP的要求 HTAP的架构 异步复制&#xff0c;不参与投票。 HTAP的特性 行列混合 列存支持基于主键的实时更新TiFlash作为列存副本OLTP和OLAP业务隔离 智能选择&#xff08;CBO自动或者人工选择&#xff09;…

如何给一个 HTAP 数据库做基准测试?StoneDB学术分享会第4期

在最新一届国际数据库顶级会议 ACM SIGMOD 2022 上&#xff0c;来自清华大学的李国良和张超两位老师发表了一篇论文&#xff1a;《HTAP Database: What is New and What is Next》,并做了 《HTAP Database&#xff1a;A Tutorial 的专项报告。这几期学术分享会的文章&#xff0…

​网易游戏实时 HTAP 计费风控平台建设

本文整理自网易互娱资深工程师, Flink Contributor, CDC Contributor 林佳&#xff0c;在 FFA 实时风控专场的分享。本篇内容主要分为五个部分&#xff1a; 实时风控业务会话会话关联的 Flink 实现HTAP 风控平台建设提升风控结果数据能效发展历程与展望未来 众所周知&#xff…

黄东旭:开发者的“技术无感化”时代,从 Serverless HTAP 数据库开始 | PingCAP DevCon 2022

12 月 1 日&#xff0c;以"去发现&#xff0c;去挑战"为主题的 PingCAP DevCon 2022 主论坛在线上成功举办&#xff0c;为数万观众带来一场技术盛宴。PingCAP 联合创始人兼 CTO 黄东旭&#xff0c;在大会上分享了“The Future of Database”的主题演讲&#xff0c;分…

快速上手TiDB,体验全新的一栈式实时HTAP数据库

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10年DBA工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61c;…

CNCC技术论坛|分布式数据库HTAP的探索与实践

本文转载自微信公众号“中国计算机学会” 编者按 12月8-10日&#xff0c;中国计算机协会即将全线上举办CNCC2022&#xff0c;大会覆盖118个计算行业、人工智能、云计算、教育、安全等30个热门专业领域的技术论坛&#xff0c;700余位专家将着力探讨计算技术与未来宏观发展趋势&a…

TiDB:基于 Raft 的 HTAP 数据库

目录 1. 简介 2. 基于 Raft 的 HTAP 3. TiDB 架构 4. Multi-Raft 存储 5. HTAP 引擎 6. 实验 7. 相关工作 8. 结论 摘要 混合事务和分析处理&#xff08;HTAP&#xff09;数据库处理事务查询和分析查询时需要隔离&#xff0c;以消除它们之间的干扰。要实现这一点&…

云原生 HTAP -- Cloud-Native Transactions and Analytics in SingleStore

文章目录 背景1 存算分离2. 统一的表存储 &#xff08;行列混存&#xff09;2.1 二级索引2.2 行锁 3. 自适应查询引擎3.1 Segment skipping 实现3.2 Filtering 选择 4 性能总结 背景 上篇看了 PolarDB-IMCI 在HTAP的实践&#xff0c;其中提到了其也有借鉴 SingleStore 的实现思…

真正的 HTAP 对用户和开发者意味着什么?

作者 | 杨传辉 OceanBase 关于作者&#xff1a; 杨传辉&#xff0c;OceanBase CTO。2010年作为创始成员之一加入 OceanBase 团队&#xff0c;主导了 OceanBase 历次架构设计和技术研发&#xff0c;从无到有实现 OceanBase 在蚂蚁集团全面落地。同时&#xff0c;他也主导了两次…

HTAP系统架构实践总结

商业上的驱动力 当前市场上对于数据的处理方式越加的注重多种类型的负载混合进行&#xff0c;即对于用户或者业务端来说&#xff0c;有一个统一的处理逻辑或者架构。如对于广告计算&#xff0c;用户画像&#xff0c;分控&#xff0c;物流&#xff0c;地理信息等商业场景下&…

HTAP 应该是一种需求而不是一款产品

HTAP&#xff08;Hybrid Transaction and Analytical Process&#xff0c;混合事务和分析处理&#xff09;自2014年明确提出以后成为了很多数据库厂商努力的方向。其实HATP并不新鲜&#xff0c;早年RDB刚兴起时本来就是用一个数据库同时做事务和分析&#xff0c;但随着数据规模…

TiDB数据库HTAP概述

目录 HTAP MPP架构 TiDB的工作负载场景与流式计算场景 例题 HTAP HTAP 同时支持OLTP&#xff08;在线事务性&#xff09;OLAP&#xff08;在线分析性&#xff09; OLTP&#xff1a;行存 如手机支付 OLAP&#xff1a;列存 如报表&#xff0c;分析传统的OLTP和OLAP解决方…

云原生 HTAP -- PolarDB-IMCI:A Cloud-Native HATP Database

文章目录 0 背景1 IMCI 架构 及 相关组件实现1.1 架构演进的背景1.2 基本架构1.2 基本使用1.4 列索引存储 设计1.5 RW-RO 的数据同步实现1.5.1 CALS1.5.2 2P-COFFER 1.6 计算引擎实现1.7 性能 2 总结 近期除了本职工作之外想要再跟进一下业界在讨论 以及 可落地的方向&#xff…

浅谈“HTAP”

文章转载自&#xff1a; 浅谈“HTAP”&#xff0c;仅用于学习&#xff0c;如有侵权&#xff0c;请联系删除。 HTAP是近些年来比较火的一个概念&#xff0c;下面就聊聊其前世今生及技术特点。 1. 数据应用类别 根据数据的使用特征&#xff0c;可简单做如下划分。在选择技术平台…

HTAP应该是一种需求 而不是一种产品

作者&#xff1a;石臻臻, CSDN博客之星Top5、Kafka Contributor 、nacos Contributor、华为云 MVP ,腾讯云TVP, 滴滴Kafka技术专家 、 LogiKM PMC(改名KnowStreaming)。 LogiKM(改名KnowStreaming) 是滴滴开源的Kafka运维管控平台, 有兴趣一起参与参与开发的同学,但是怕自己能力…

009、体系架构之HTAP

HTAP HTAP技术传统的HTAP解决方案HATP的要求TiDB的HTAP架构TiDB的HTAP特性使用场景 MPP HTAP技术 传统的HTAP解决方案 HATP的要求 可扩展性 分布式事务分布式存储 同时支持OLTP与OLAP 同时支持行存和列存OLTP与OLAP业务隔离 实时性 行存与列存数据实时同步 TiDB的HTAP架构 …

什么是HTAP 阿里云上实现

讲师介绍 梁成辉&#xff08;城璧&#xff09;&#xff0c;阿里数据库事业部技术专家&#xff0c;阿里分布式数据层中间件TDDL、云产品分布式关系型数据库服务DRDS技术负责人。曾多次担任数据层稳定性负责人并保障双十一TDDL & DRDS的稳定性&#xff0c;目前主要聚焦在DRD…