萌新笔记——linux下查看内存的使用情况
windows上有各种软件可以进行“一键加速”之类的操作,释放掉一些内存(虽然我暂时不知道是怎么办到的,有待后续学习)。而任务管理器也可以很方便地查看各进程使用的内存情况,如下图:

同样地,linux下也有一些方法来查看内存的使用情况。
一、free
对于free命令,可以加上-m参数,使其显示单位为Mb。如下:
[ccx@ubuntu ~]$>free
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
[ccx@ubuntu ~]$>free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
这里出现了一些名词,有些是我不知道的,我专门去查了一下它们所代表的含义。
| total | used | free | shared | buffers | cached | |
| Mem | 表示物理 内存总量 |
表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用 |
未被分配的内存 | 共享内存 | 系统分配但未被使用的buffers 数量 | 系统分配但未被使用的cache 数量 |
| 实际使用的buffers 与cache 总量,也是实际使用的内存总量 | 未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存 | |||||
| Swap |
同样是做为缓存,buffers和cache又有啥区别呢?
于是又查了些资料,发现buffers实际应该是叫“缓冲”,其英文解释是:A buffer is something that has yet to be "written" to disk.
就是说,buffers是将要写入硬盘中的数据缓存。
而cache的英文解释:A cache is something that has been "read" from the disk and stored for later use.
就是说,cache是从硬盘或者存储设备读进计算机后缓存在内存中的数据。
想起看《计算机组成原理》的时候,有看到因特尔的cpu与内存之间有cache,这之间好像有什么区别的样子。
继续查资料,发现了page cache 和 buffer cache。简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。
对于cache和buffer,cached是cpu与内存间的,buffer是内存与磁盘间的,都是为了解决速度不对等的问题。
在free中,buffer 是buffer cache的内存,是块设备的读写缓冲区;cache是page cache的内存, 文件系统的cache。
关于buffer与chche,这里就不多说了,最后的链接5里讲得挺清楚了。
这里还有一个名词,Swap,即虚拟内存。当物理内存不够用的时候,就要释放掉一部分空间,以供当前运行程序使用。这些被释放掉的内存的数据就被临时保存在虚拟内存中。但是,并非所有的数据都全被保存,只有那些使用malloc或new生成的对象,他们在文件中并没有相应的“储备”文件,被称为匿名内存数据,需要临时地存进Swap。故Swap又称匿名数据交换空间。在链接3中有其说明。
至于shared,暂时没查到与之相关的资料,只是在某链接里提了一下其不常用。
学习时参考的链接:
1、http://www.splaybow.com/post/linuxmemusage.html
2、http://ludihua.blog.51cto.com/4601284/1569816
3、http://www.cnblogs.com/my_life/articles/4629555.html
4、http://www.jb51.net/LINUXjishu/10945.html
5、http://www.cnblogs.com/chenpingzhao/p/5161844.html
二、top命令
top命令就好像是“linux下的任务管理器”:

其中,第一行的内容与uptime命令的结果是一样的
[ccx@ubuntu ~]$>uptime
:: up min, user, load average: 0.00, 0.11, 0.16
第二行的名词也比较好理解,就是进程总数与处于R、S、T、Z状态下的进程数:
| Tasks | total | running | sleeping | stopped | zombie |
| 总数 | 执行 | 等待(睡眠) | 暂停 | 僵尸 | |
| 181 | 2 | 179 | 0 | 0 |
第三行就是CPU的使用情况了,如下:
| %Cpu(s) | |
| us | 用户空间占用CPU百分比 |
| sy | 内核空间占用CPU百分比 |
| ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
| id | 空闲CPU百分比 |
| wa | 等待输入输出的CPU时间百分比 |
| hi | CPU服务于硬件中断所耗费的时间总额 |
| si | CPU服务软中断所耗费的时间总额 |
| st | Steal Time |
第四、五行就是内存的使用情况了,和free命令里相似。
然后是列表的含义:
| PID | 进程ID |
| USER | 进程所有者 |
| PR | 优先级 |
| NI | nice值,负值表示高优先级,正值表示低优先级 |
| VIRT | 进程使用的虚拟内存总量 |
| RES | 进程使用的、未被换出的物理内存大小 |
| SHR | 共享内存大小 |
| S | 进程状态 |
| %CPU | 上次更新到现在的CPU时间占用百分比 |
| %MEM | 进程使用的物理内存百分比 |
| TIME+ | 进程使用CPU总时间 |
| COMMAND | 命令名、命令行 |
默认情况下只显示这些比较重要的信息。在TOP界面下,按f可以修改显示的内容。这个界面我并不是很懂,就不叙述了。

学习时参考的链接:
http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=1684&fromuid=34304
http://jingyan.baidu.com/article/4d58d5412917cb9dd4e9c0ed.html
三、vmstat命令
[ccx@ubuntu ~]$>vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
具体参数如下表:
| r | The number of processes waiting for run time. | 处于运行队列中的内核线程数目(进程数)。 |
| b | The number of processes in uninterruptible sleep. | 置于等待队列(等待资源、等待输入/输出)的内核线程数目。 处于block队列中不可中断的进程数 |
| swpd | the amount of virtual memory used. | 可用的虚拟交换内存 |
| free | the amount of idle memory. | 空闲内存 |
| buff | the amount of memory used as buffers. | 已用缓冲数目 |
| cache | the amount of memory used as cache. | 已用缓存数目 |
| si | Amount of memory swapped in from disk (/s). | 从磁盘到内存的交换页数目 (单位/S) |
| so | Amount of memory swapped to disk (/s). | 从交换内存到磁盘的交换页数目(单位/S) |
| bi | Blocks received from a block device (blocks/s). | 接收到块设备的块数(块/秒) |
| bo | Blocks sent to a block device (blocks/s). | 发送到块设备的块数(块/秒) |
| in | The number of interrupts per second, including the clock. | 每秒中断数,包括时钟中断 |
| cs | The number of context switches per second. | 每秒上下文切换数 |
| us | Time spent running non-kernel code. (user time, including nice time) | 用户时间,处于用户模式的时间百分比 |
| sy | Time spent running kernel code. (system time) | 系统时间,处于内核模式的时间百分比 |
| id | Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time. | CPU空闲时间,空闲时间百分比 |
| wa | Time spent waiting for IO. Prior to Linux 2.5.41, included in idle. | CPU 空闲时间,在此期间系统有未完成的磁盘/NFS I/O 请求 |
| wt | Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown. | 来自于虚拟机偷取的CPU所占的百分比(这个不会翻译...) |
学习时参考的链接:
http://blog.csdn.net/zhuying_linux/article/details/7336869
http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html
萌新笔记——linux下查看内存的使用情况的更多相关文章
- linux下查看内存的使用情况
windows上有各种软件可以进行“一键加速”之类的操作,释放掉一些内存(虽然我暂时不知道是怎么办到的,有待后续学习).而任务管理器也可以很方便地查看各进程使用的内存情况,如下图: 同样地,linux ...
- 萌新笔记——linux下(ubuntu)反删除(误删恢复)与回收站制作
刚刚有个小伙伴不小心删了他写了好几的天代码,为他心疼之余帮他找回了文件. 想到我之前也常常误删一些文件,就干脆分享一下我的反删除方法,并说说我做的回收站(好low的,求大神指点) 首先是反删除软件ex ...
- linux下查看内存的命令
top能显示系统内存.我们常用的Linux下查看内容的专用工具是free命令. 下面是对内存查看free命令输出内容的解释: total:总计物理内存的大小. used:已使用多大. free:可用有 ...
- Linux下查看内存使用情况方法总结
Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...
- (笔记)Linux下查看CPU使用率的命令
1.top 使用权限:所有使用者 使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 说明:即时显示process的动态 d :改变显示的更新速度,或 ...
- Linux 下查看内存使用情况方法总结
Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...
- linux下查看内存频率,内核函数,cpu频率
查看CPU: cat /proc/cpuinfo # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理 ...
- 【转】Linux下查看TCP网络连接情况
查看TCP网络连接情况 命令:netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ www.2cto.com 返回结 ...
- linux下查看内存使用情况
基本内存术语解读 1> free -m 同样是做为缓存,buffers和cache又有啥区别呢? 于是又查了些资料,发现buffers实际应该是叫“缓冲”,其英文解释是:A buffer is ...
随机推荐
- 使用 Nodejs 搭建简单的Web服务器
使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...
- 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用
由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...
- C语言 · 阶乘计算 · 基础练习
问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个大整数a,A[0]表 ...
- Redis/HBase/Tair比较
KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式 支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...
- NET Core-学习笔记(三)
这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...
- vue.js初探
前言 入手2016最火前端框架之一vue.js.大概从网上找了些资料看了下vue.js,从网上的资料来看只能惊叹其发展速度太快,让我意外的是其作者是华人的前提下作品这么受欢迎. 网上的博客和教程各种组 ...
- C++ 事件驱动型银行排队模拟
最近重拾之前半途而废的C++,恰好看到了<C++ 实现银行排队服务模拟>,但是没有实验楼的会员,看不到具体的实现,正好用来作为练习. 模拟的是银行的排队叫号系统,所有顾客以先来后到的顺序在 ...
- C# 程序中嵌入百度地图
本例是对WinForm中使用百度地图的简要介绍.百度地图目前支持Android开发,IOS开发,Web开发,服务接口,具体可以参照'百度地图开放平台'. [动态加载百度地图]涉及到的知识点: WebB ...
- C# 数组的交集、差集、并集
C# 数组的交集.差集.并集 工作中经常会用这方面的知识来检查那些字段是必须输入的,那些是禁止输入. using System; using System.Collections.Generic; u ...
- 如何查看w3p.exe 和IIS 应用程序池的关系
图形界面方式 命令行方式 如果找不到 appcmd Appcmd.exe exists at the location %systemroot%\system32\inetsrv\. You eith ...