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下查看内存的命令
top能显示系统内存.我们常用的Linux下查看内容的专用工具是free命令. 下面是对内存查看free命令输出内容的解释: total:总计物理内存的大小. used:已使用多大. free:可用有 ...
- Linux下查看内存使用情况方法总结
Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...
- Linux 下查看内存使用情况方法总结
Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...
- 【转】Linux下查看TCP网络连接情况
查看TCP网络连接情况 命令:netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ www.2cto.com 返回结 ...
- linux下查看内存频率,内核函数,cpu频率
查看CPU: cat /proc/cpuinfo # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理 ...
- linux下查看内存使用情况
基本内存术语解读 1> free -m 同样是做为缓存,buffers和cache又有啥区别呢? 于是又查了些资料,发现buffers实际应该是叫“缓冲”,其英文解释是:A buffer is ...
- [转载] Linux下查看内存使用情况方法总结
原文: http://9iphp.com/linux/1247.html 强烈推荐 htop.
- Linux 下查看CPU的使用情况
1.top使用权限:所有使用者使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]说明:即时显示process的动态d :改变显示的更新速度,或是在交谈 ...
随机推荐
- 2017qcon大会的一点想法(安全人才如何不被淘汰?)
2017 qcon 上海专门设立了“直击黑产,业务安全的攻与防”专题,通过这次专题的了解和学习,让我对黑产的攻防有了更深入认识. 1. 安全防护趋势 2017 qcon 上海专门设立了“直击黑产,业务 ...
- PHP开发微信公众号(二)消息接受与推送
上一篇文章我们知道怎么获取二维码,这样别人就可以扫描二维码来关注我们,但是别人关注后,发送消息,我们怎么进行相关处理? 这里我们就来学习下怎么处理处理这些消息,以及推送消息. 学习之前首先你需要有一个 ...
- Vue---基础笔记 (基础的构建 )
vue 基础 准备工作 chrome浏览器插件安装 完成后出现标记 vue页面标记需要使用vue.js非vue.min.js 调试页面 结构模型MVVM = m:model + v:view + v ...
- tomcat下各个文件夹的作用
1.bin目录:这个文件夹包含的是启动/关闭tomcat的脚本,里面有startup.sh(Linux环境下启动tomcat脚本)和startup.bat(Windows环境下启动tomcat脚本), ...
- POJ_3264 Balanced Lineup 【线段树 + 区间查询】
一.题面 POJ3264 二.分析 典型的线段树的题,没有更新只有查询. 查询的时候需要注意的是,在判断区间是完全属于右子树还是左子树时,要根据建树的情况来选择,不然会出错.具体看代码 三.AC代码 ...
- JVM 统计监测命令
参考 深入理解JVM(七)——性能监控工具 JVM性能调优监控工具专题一 JVM调优总结 + jstat 分析 1. 进入 jdk 目录 cd /usr/local/jdk/bin 2. 查询所有 j ...
- SpringBoot + Spring MVC国际化使用示例
项目中需要显示中英文两种语言,所以需要对显示的内容进行国际化,如下是一个示例程序. 程序文件结构,如下图,后面详细列出各文件的代码. 1. 编写maven的pom.xml文件,如下: <proj ...
- Java - String中的==、equals及StringBuffer(转自CSDN 作者:chenrui_)
equals是比较值/对象是否相同,==则比较的是引用地址是否相同. == 如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象 package com.char3; public ...
- Mac上实现对Python的版本切换
最近朋友邀请我帮忙写个比特币自动化交易程序,要求的平台是Okex,用Python写,之前到是自己学过一点自动化交易,不过是MT5的.看了一下Okex提供的API接口,和MT5不一样,它并没有现成的ID ...
- Apache和Tomcat的整合过程(转载)
一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由 ...