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下查看内存的使用情况的更多相关文章

  1. linux下查看内存的使用情况

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

  2. 萌新笔记——linux下(ubuntu)反删除(误删恢复)与回收站制作

    刚刚有个小伙伴不小心删了他写了好几的天代码,为他心疼之余帮他找回了文件. 想到我之前也常常误删一些文件,就干脆分享一下我的反删除方法,并说说我做的回收站(好low的,求大神指点) 首先是反删除软件ex ...

  3. linux下查看内存的命令

    top能显示系统内存.我们常用的Linux下查看内容的专用工具是free命令. 下面是对内存查看free命令输出内容的解释: total:总计物理内存的大小. used:已使用多大. free:可用有 ...

  4. Linux下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  5. (笔记)Linux下查看CPU使用率的命令

    1.top 使用权限:所有使用者 使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 说明:即时显示process的动态 d :改变显示的更新速度,或 ...

  6. Linux 下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  7. linux下查看内存频率,内核函数,cpu频率

    查看CPU: cat /proc/cpuinfo # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理 ...

  8. 【转】Linux下查看TCP网络连接情况

    查看TCP网络连接情况 命令:netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ www.2cto.com 返回结 ...

  9. linux下查看内存使用情况

    基本内存术语解读 1> free -m 同样是做为缓存,buffers和cache又有啥区别呢? 于是又查了些资料,发现buffers实际应该是叫“缓冲”,其英文解释是:A buffer is ...

随机推荐

  1. .Net多线程编程—System.Threading.Tasks.Parallel

    System.Threading.Tasks.Parallel类提供了Parallel.Invoke,Parallel.For,Parallel.ForEach这三个静态方法. 1 Parallel. ...

  2. python爬取github数据

    爬虫流程 在上周写完用scrapy爬去知乎用户信息的爬虫之后,github上star个数一下就在公司小组内部排的上名次了,我还信誓旦旦的跟上级吹牛皮说如果再写一个,都不好意思和你再提star了,怕你们 ...

  3. JS的内建函数reduce

    @(js) reduce函数,是ECMAScript5规范中出现的数组方法.在平时的工作中,相信大家使用的场景并不多,一般而言,可以通过reduce方法实现的逻辑都可以通过forEach方法来变相的实 ...

  4. 以向VS 程序打包集成自动写入注册表功能为例,介绍如何实现自由控制安装过程

    最近由于项目部署时需要更灵活的控制程序安装的流程以及自定义安装行为,特意研究了一下VS程序打包,把解决办法和大家分享一下. 以VS2010为例: 这是一个已经设置好最基本的Visual Studio ...

  5. Newtonsoft.Json设置类的属性不序列化

    参考页面: http://www.yuanjiaocheng.net/webapi/parameter-binding.html http://www.yuanjiaocheng.net/webapi ...

  6. Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...

  7. iOS之开发中常用的颜色及其对应的RGB值

      R G B 值   R G B 值   R G B 值 黑色 0 0 0 #000000 黄色 255 255 0 #FFFF00 浅灰蓝色 176 224 230 #B0E0E6 象牙黑 41 ...

  8. 跟着老男孩教育学Python开发【第四篇】:模块

    双层装饰器示例 __author__ = 'Golden' #!/usr/bin/env python # -*- coding:utf-8 -*-   USER_INFO = {}   def ch ...

  9. Linux虚拟化学习笔记<一>

    关于虚拟化,原理的东西是非常复杂的,要想完全理解,没有足够的耐心是不不能完全学透这部分内容的.那下面我主要以资源汇总的形式把一些资料罗列出来,帮助大家快速理解虚拟化,快速使用和配置. 为什么要虚拟化: ...

  10. Android快乐贪吃蛇游戏实战项目开发教程-06虚拟方向键(五)绘制方向键箭头

    本系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html本系列教程项目源码GitHub地址:https://github.com/jack ...