0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从软件角度看看内存

麦辣鸡腿堡 来源:TrustZone 作者:TrustZone 2023-10-30 17:41 次阅读

关于内存,从软件的角度去查看,其实作为一个软件程序员,大多数对这个维度的接触还是蛮多的。linux中有个free命令,其就是查看系统内存的情况。

free命令的选项也比较简单,常用的参数命令如下。

-b 以Byte为单位显示内存使用情况。

-k 以KB为单位显示内存使用情况。

-m 以MB为单位显示内存使用情况。

-g 以GB为单位显示内存使用情况。

-o 不显示缓冲区调节列。

-s《间隔秒数》 持续观察内存使用状况。

-t 显示内存总和列。

-V 显示版本信息

下面是Linux机器中使用free -m命令看到的内存情况。

$ free -mtotal used free shared buff/cache available

Mem: 7763 5507 907 0 1348 1609

Swap: 16197 2940 13257

figo@figo-OptiPlex-9020:~$

可以看到,这个机器上一共有7 763MB物理内存。

total:指系统中总的内存。这里有两种内存,一个是“Mem”,指的是物理内存;另一个是“Swap”,指的是交换磁盘。

used:指程序使用的内存。

free:未被分配的物理内存大小。

shared:共享内存大小,主要用于进程间通信

buff/cache:buff指的是buffers,用来给块设备做缓存,而cache指的是page cache,用来给打开的文件做缓存,以提高访问文件的速度。

available:这是free命令新加的一个选项。当内存短缺时,系统可用回收buffers和page cache。那么availabe = free

  • buffers + page cache对不对呢?

其实在现在的Linux内核中,这个公式不完全正确,因为buffers和page cache里并不是所有的内存都可以回收的,比如共享内存段、tmpfs和 ramfs 等属于不可回收的。所以这个公式应该变成:available = free + buffers + page cache –不可回收部分。

在我们写代码的时候也会用到malloc()这个函数,如果你申请内存没有用到,那可能是你使用的高级语言,申请内存的函数封装了malloc。

图片

对于这些函数瞅一眼就行了,需要用的时候再好好深入学习一下这个里面的东西。了解这个API背后的实现。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11219

    浏览量

    208872
  • 内存
    +关注

    关注

    8

    文章

    2996

    浏览量

    73867
  • 软件
    +关注

    关注

    69

    文章

    4762

    浏览量

    87146
收藏 人收藏

    评论

    相关推荐

    硬件引申出内存屏障,带你深入了解Linux内核RCU

    本文硬件的角度引申出内存屏障,这不是内存屏障的详尽手册,但是相关知识对于理解RCU有所帮助。
    的头像 发表于 09-19 11:39 6117次阅读
    <b class='flag-5'>从</b>硬件引申出<b class='flag-5'>内存</b>屏障,带你深入了解Linux内核RCU

    Linux kernel内存管理模块结构分析

    基于上面章节的需求,Linux kernel虚拟内存(VM)、DMA mapping以及DMA buffer sharing三个角度,对内存进行管理.
    发表于 09-19 11:55 1744次阅读
    Linux kernel<b class='flag-5'>内存</b>管理模块结构分析

    可综合的RTL代码的角度聊聊interface

    SystemVerilog引入了interface,这里我们可综合的RTL代码的角度聊聊interface。
    的头像 发表于 10-12 09:06 1711次阅读
    <b class='flag-5'>从</b>可综合的RTL代码的<b class='flag-5'>角度</b>聊聊interface

    内存芯片测试软件工具

    内存芯片测试软件工具,操作简单的。
    发表于 03-25 08:57 37次下载

    外观上识别内存

     外观上识别内存   安装好CPU后,接下来就要开始安装内存条了。在安装内存条之前,可以在主板说明书上查阅主板可支持的
    发表于 12-17 16:21 2731次阅读

    Elastos内存管理对软件调试的支持

    软件调试支持是操作系统的重要组成部分,而由于内存管理不善造成的软件BUG占软件故障的很大比例。内存
    发表于 12-01 15:38 19次下载
    Elastos<b class='flag-5'>内存</b>管理对<b class='flag-5'>软件</b>调试的支持

    设计角度透视 数字集成电路

    设计角度透视 数字集成电路讲解。
    发表于 03-24 17:47 0次下载

    应用角度详解什么是AXI

    本节介绍的AXI是个什么东西呢,它其实不属于Zynq,不属于Xilinx,而是属于ARM。它是ARM最新的总线接口,以前叫做AMBA,3.0以后就称为AXI了。 书上讲的AXI比较具体,本节呢不打算落入俗套,应用角度解释AX
    的头像 发表于 07-13 07:08 1.1w次阅读
    <b class='flag-5'>从</b>应用<b class='flag-5'>角度</b>详解什么是AXI

    纯粹软件技术的角度看Windows CE

    纯粹软件技术的角度看Windows CE,则可以说Windows CE就是嵌入式的Windows,虽然Windows CE不是微软唯一的一款嵌入式操作系统产品,但无疑是最有代表性的一款。在纯粹技术的方面,Windows CE和
    的头像 发表于 09-30 09:43 2516次阅读
    <b class='flag-5'>从</b>纯粹<b class='flag-5'>软件</b>技术的<b class='flag-5'>角度</b>看Windows CE

    信号完整性角度谈选择示波器

    信号完整性角度谈如何选择示波器
    的头像 发表于 01-13 15:40 3154次阅读

    如何理解现场总线?工业通信的角度看看资料下载

    电子发烧友网为你提供如何理解现场总线?工业通信的角度看看资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-15 08:45 12次下载
    如何理解现场总线?<b class='flag-5'>从</b>工业通信的<b class='flag-5'>角度</b><b class='flag-5'>看看</b>资料下载

    应用角度介绍讲解各种电子元器件

    应用角度介绍讲解各种电子元器件。
    发表于 06-10 10:05 66次下载

    软件角度分析linux内核USB子系统的热插拔过程

    本文软件角度分析linux内核USB子系统的热插拔过程,以实际分析思路和过程行文,基于linux内核版本:4.19.4,记录分析USB子系统时的所得。
    的头像 发表于 01-15 09:28 5414次阅读

    硬件软件角度理解Gadget框架

    2. 硬件软件角度理解 Gadget 框架 USB 传输的核心是 endpoint,使用 endpoint 可以收发数据。在 endpoint 之上,就可以模拟 USB 串口、USB 触碰屏
    的头像 发表于 07-13 11:32 997次阅读
    <b class='flag-5'>从</b>硬件<b class='flag-5'>软件</b><b class='flag-5'>角度</b>理解Gadget框架

    进程的角度内存

    在windows下的可执行文件的格式为.exe,而Linux的下的是ELF。这是一种文件格式,就是告诉你文件是怎么存储的。 整个ELF的图看看 这些内容和内核空间定义也差不多。 代码段(.text
    的头像 发表于 10-30 18:02 488次阅读
    <b class='flag-5'>从</b>进程的<b class='flag-5'>角度</b>看<b class='flag-5'>内存</b>