从软件角度看看内存

描述

关于内存,从软件的角度去查看,其实作为一个软件程序员,大多数对这个维度的接触还是蛮多的。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。

Linux

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

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分