千家信息网

Linux用户进程是怎么释放内存的

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"Linux用户进程是怎么释放内存的",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Linux用户进程是怎么释放内存的"吧!Linux
千家信息网最后更新 2026年11月03日Linux用户进程是怎么释放内存的

这篇文章主要讲解了"Linux用户进程是怎么释放内存的",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Linux用户进程是怎么释放内存的"吧!

Linux用户进程是如何释放内存的
Linux进程使用内存的基本流程:


从图中我们可以看出,进程的堆,并不是直接建立在Linux的内核的内存分配策略上的,而是建立在glibc的堆管理策略上的(也就是glibc的动态内存分配策略上),堆的管理是由glibc进行的。所以我们调用free对malloc得到的内存进行释放的时候,并不是直接释放给操作系统,而是还给了glibc的堆管理实体,而glibc会在把实际的物理内存归还给系统的策略上做一些优化,以便优化用户任务的动态内存分配过程。
那么glibc的堆管理器在什么时候才把物理内存归还给系统呢?
它会从堆的最大线性地址开始,从后向前计算用户任务当前有多少空闲的堆内存(直到碰到使用中的堆内存地址为止),比如在该图中:


它会认为有2048k的可释放内存,只有在该值大于某个特定的threshhold时(2.3.6上为64k),它才会把这些内存归还给系统。而在中间的"未使用"内存是不会归还给系统的,所以系统也不可能再利用这块物理内存页(我们假设系统没有swap区和swap文件),也就是说系统的内存会为此减少,除非在它之前的堆内存都用free进行释放以后,glibc的堆管理器才有可能(只是有可能)把该段内存归还给系统。
由此,我们在使用malloc/free时应该小心,特别是在初始化时分配了好多内存,但是在这之后却再也不需要这么多的内存了,而这块内存又没有达到threshhold值或者在堆的最高线性地址处有某块内存没有释放,但是它前面的所有堆内存都释放了;这种情况下,用户任务将会浪费一些物理内存,这在资源比较紧张的嵌入式系统中是不可容忍的。

感谢各位的阅读,以上就是"Linux用户进程是怎么释放内存的"的内容了,经过本文的学习后,相信大家对Linux用户进程是怎么释放内存的这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

内存 系统 用户 进程 管理 物理 策略 任务 地址 分配 学习 也就是 内容 动态 情况 时候 是在 线性 而是 图中 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技靠谱吗 广东万易互联网科技有限公司惠州分公司 互联网科技公司起名 金诺互联网科技 港股互联网科技股 万易互联网科技 互联网科技股票 广州宏创互联网科技 北京互联网络科技有限公司 互联网科技ppt模板 菲比寻常互联网科技 互联网公司会议桌创意科技软装饰 知域互联网科技有限公司大骗子 深圳市优智互联网科技有限公司 上海科技产业互联网平台 北京市互联网新科技 银川新华互联网科技学校是国营吗 深圳互联网科技园地址 盐城市攀科互联网科技有限公司 互联网企业和网络科技有限公司 为想互联网科技怎么样 居家互联网科技有限公司 镁科技互联网资讯平台 花神(南京)互联网科技有限公司 中国科技创新与世界互联网大会 互联网行业科技股 互联网科技大佬云集 北京瑞云互联网科技有限公司 现代科技的标志之一的互联网 恒生科技互联网指数十大成分股
0