正确看懂操作系统的内存信息

2021/04/04

前言

最近内存条涨价了,更换成本比较高,可能大家平时要升级内存条都是估摸自己使用需要多大就配多大。但其实操作系统提供了很完备的信息可以让我们查看日常内存情况。大家可以根据数据来加多少或者确定当前遇到的问题是不是内存限制还是其他限制。当然像我这种起步不是32G就心里就痒痒,看啥数据都没用,心里舒服最重要,代价就是…..多花钱。

下面会介绍各个MacOS\Win\Linux下如何查看内存使用情况以及各个参数的意义,下一篇会更新购买内存条的一些讲究,例如一些时序、频率、颗粒、套装、延迟等一些参数的意义。

Mac

  1. cmd+空格,然后在里面输入 活动监视器

image-20210404170757599

输入活动监视器,然后回车打开
  1. 打开后如下图

image-20210404171027363

打开后整个界面其实比较明了,我不说大家也可能看懂,我针对每个参数讲解一下其中的意思(下列标号是图中的标号)

  1. 这里显示的进程信息,不包括应用fork的子进程
  2. 这里对应的该进程使用的内存大小
  3. 物理内存表示你实际内存条大小,这个值你换了内存条才会变
  4. 已经使用的内存,是指实际上内存中分配+缓存文件的大小,但是大家不要认为这个值如果很大,快接近物理内存大小就着急要加内存条了
  5. 已经缓存文件,这是应用为了提高加载速度把一些暂时没有用但是以后可能会用到的缓存进内存,这部分可以不会被删除,如果有新文件就直接被覆写,所以这部分大家可以理解成空闲内存的一部分。这也是上面为什么不要单纯看已经使用的内存大小值作为内存压力,应该把这里的这部分减掉
  6. 已使用的交换内存是内存和磁盘swap的值,这在下次os的内存管理会详细介绍
  7. 这部分是对4-已经使用内存的详细解释,具体内存分配的位置
    1. app内存是所有应用和缓存文件占用的大小
    2. 联动内存是系统运行所需要的内存
    3. 被压缩的大小,苹果官网有对这个技术详细描述,大概原理就是把非活跃应用占用的内存压缩出磁盘,利用CPU时间换硬盘I/O时间。

WIN

  1. 在桌面按下Ctrl+Shift+ESC按键或者右键单击任务栏选择任务管理器,会弹出如下界面

image-20210404175157642

弹出后,依次选 性能->内存
  1. 下面我也按图上顺序,简单介绍一下每个值的意义,分页这设计操作系统的知识,这里简单提一下,下次总结一篇os的内存管理
    1. 这里显示的实际你内存插槽中的物理大小,我这里使用的是虚拟机,给分配的是4G,所以显示的是4G
    2. 使用中表示应用实际使用的内存大小
    3. 可用相当于linux中的free,空闲内存的大小
    4. 已提交这里有两个值,第一个值是应用已经向系统提交申请了内存大小(申请归申请,应用不一定会全部吃满,但是我这台机器上已经吃满了,小伙伴们可以看看自己的电脑上看看这已提交和使用中是否一致);第二个值是第一个值加上swap的值,swap值是刷盘大小,有一部分虚拟内存映射会映射到磁盘上面,这部分会在这里体现,在win下swap会在C盘下面的一个pagefile.sys文件里面(需要打开显示受保护的隐藏文件才可以看到)
    5. 已经缓存表示文件的缓存,这部分也是相当于空闲内存
      1. 分页缓冲池\非分页缓冲池,这个不是很重要,占用也不会很多,这部分主要是内核和一些驱动的占用的空间。感兴趣可以去查看微软官方文档点击

Linux

  1. 在shell窗口输入 free -h 其中free是内存命令,-h是表示使用人类方便看的格式显示

image-20210404172939714

我这里使用一台32G计算结点作为演示
  1. shell窗口的结果也比较明显,下面我也把每个参数说明一下也是按照图上的序号
    1. 其中图上有一个mem和swap,这个swap是虚拟内存映射到磁盘所占用的大小,因为我这是线上的计算结点,所以就没有这部分的占用。每个操作系统都会有swap,linux使用一个分区来映射地址,win其实是把所有的映射都在c盘的一个文件下,这有一点不一样
    2. total是真实内存大小,因为进制转换的关系这里显示31G, 其实是32G。
    3. used是使用了多少,这个使用是应用真实使用的大小
    4. free是表示空闲内存大小
    5. shared是共享内存,这部分一般进程之间通信,所以占用一般比较少,它允许两个不相关的进程访问同一段内存,是一种传递数据的有效方式,
    6. buff/cache这部分是文件缓存大小,这部分也是只会被覆写,相当于变现的空闲空间。有兴趣可以了解Page Cache 和 Buffer Cache,这部分的cache是对磁盘的读写过数据的缓存。
    7. available是可用内存,这部分其实很简单就是free+buff/cache的总和。所以不能单纯的看free,最后还是这个量,可以看到我现在机子上面因为没有task任务所以出于比较空闲的状态,剩下23G。

后言

至此三个操作系统的简单查看内存信息已经介绍完了,大家发现了,每个操作系统虽然底层对内存的管理可能不尽相同,但是内存管理方式都差不多,都是那几个参数,可能原来很多人并没有很仔细去看系统提供的监视器,或者说只是简单地看一下占用情况。

那现在应该知道了,如何看是否达到内存上限了,不能单纯的看已经使用内存是否接近物理真实内存,应该加上缓存文件。其实这个缓存文件也是智能会根据空闲内存去存放多少应用的缓存文件,你内存比较小它就少存一些,内存大一些它就会多占用一些。

对于linux来说,更加关注的应该是她swap空间,当频繁swap时说明内存压力比较大了,应该要加内存了。

(转载本站文章请注明作者和出处 没有气的汽水



┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐
├ 文章已经完啦, 想要第一时间收到文章更新可以关注↓ ┤
└┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘

Post Directory






下面是评论区,欢迎大家留言探讨或者指出错误哈