在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在linux系统如何查看内存使用情况呢?下面和大家分享在Linux 下查看内存使用情况的free命令:

  [root@scs-2 tmp]# free

  total used free
shared buffers cached

  Mem: 3266180 3250004 16176 0 110652 2668236

  -/+ buffers/cache: 471116 2795064

  Swap: 2048276 80160
1968116

  下面是对这些数值的解释:

  total:总计物理内存的大小。

  used:已使用多大。

  free:可用有多少。

  Shared:多个进程共享的内存总额。

  Buffers/cached:磁盘缓存的大小。

  第三行(-/+ buffers/cached):

  used:已使用多大。

  free:可用有多少。

  第四行就不多解释了。

  区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。
这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached
都是属于被使用,所以他的可用内存是16176KB,已用内存是3250004KB,其中包括,内核(OS)使用+Application(X,
oracle,etc)使用的+buffers+cached.

  第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached
是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

  所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。

  如上例:

  2795064=16176+110652+2668236

  接下来解释什么时候内存会被交换,以及按什么方交换。
当可用内存少于额定值的时候,就会开会进行交换。

  如何看额定值:

  cat /proc/meminfo

  [root@scs-2 tmp]# cat /proc/meminfo

  MemTotal: 3266180 kB

  MemFree: 17456 kB

  Buffers: 111328 kB

  Cached:
2664024 kB

  SwapCached: 0 kB

  Active: 467236 kB

  Inactive: 2644928 kB

  HighTotal: 0 kB

  HighFree: 0
kB

  LowTotal: 3266180 kB

  LowFree: 17456 kB

  SwapTotal: 2048276 kB

  SwapFree: 1968116 kB

  Dirty:
8 kB

  Writeback: 0 kB

  Mapped: 345360 kB

  Slab:
112344 kB

  Committed_AS: 535292 kB

  PageTables: 2340 kB

  VmallocTotal: 536870911 kB

  VmallocUsed: 272696 kB

  VmallocChunk: 536598175 kB

  HugePages_Total: 0

  HugePages_Free: 0

  Hugepagesize: 2048 kB

  用free
-m查看的结果:

  [root@scs-2 tmp]# free -m

  total used free shared
buffers cached

  Mem: 3189 3173 16 0 107 2605

  -/+
buffers/cache: 460 2729

  Swap: 2000 78 1921

  查看/proc/kcore文件的大小(内存镜像):

  [root@scs-2 tmp]# ll -h
/proc/kcore

  -r——– 1 root root 4.1G Jun 12 12:04 /proc/kcore

  备注:

  占用内存的测量

  测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。

  /proc/meminfo 机器的内存使用信息

  /proc/pid/maps
pid为进程号,显示当前进程所占用的虚拟地址。

  /proc/pid/statm 进程所占用的内存

  [root@localhost ~]# cat /proc/self/statm

  654 57 44 0 0 334 0

  输出解释

  CPU 以及CPU0。。。的每行的每个参数意思(以第一行为例)为:

  参数 解释
/proc//status

  Size (pages) 任务虚拟地址空间的大小 VmSize/4

  Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4

  Shared(pages) 共享页数
0

  Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4

  Lrs(pages)
被映像到任务的虚拟内存空间的库的大小 VmLib/4

  Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )4

  dt(pages) 04

  查看机器可用内存

  /proc/28248/>free

  total used free shared buffers cached

  Mem: 1023788 926400
97388 0 134668 503688

  -/+ buffers/cache: 288044 735744

  Swap:
1959920 89608 1870312

  我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。

  所以 空闲内存=free+buffers+cached=total-used

linux 下查看系统内存使用情况的方法的更多相关文章

  1. [转]linux下查看进程内存使用情况

    动态查看一个进程的内存使用 1.top命令 top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s 如果想根据内存使用量进行排序,可以shift + ...

  2. linux下查看进程内存使用情况

    1. top命令--动态查看一个进程的内存使用top -d 1 -p pid [,pid ...]  //设置为delay 1s,默认是delay 3s  如果想根据内存使用量进行排序,可以shift ...

  3. Linux下查看线程数的几种方法汇总

    Linux下查看线程数的几种方法汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux下查看某个进程的线程数量 pstree命令以树状图显示进程间的关系(display ...

  4. Linux下查看磁盘挂载的三种方法

    Linux下查看磁盘挂载的三种方法 2009-06-05 23:17 好久没有更新日志了,呵呵.不是没有要写的东东.实在抽不出时间来写,要准备公司的考试呢,C++考试.已经有七个月没有写C++代码了, ...

  5. Linux下查看磁盘挂载的几种方法

    Linux下查看磁盘挂载的几种方法 第一种方法:df命令 # df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtm ...

  6. linux下查看系统属性

    inux下查看系统属性1.查看cpu信息查看所有cpu信息:cat /proc/cpuinfo查看cpu类型: grep "model name" /proc/cpuinfo2.查 ...

  7. [转] linux 下查看一个进程运行路径的方法

    http://blog.csdn.net/brioxu/article/details/5104736 在linux下查看进程大家都会想到用 ps -ef|grep XXX ps -aux | hea ...

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

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

  9. 在Linux下查看系统版本信息命令总结

    每次在想查看系统是多少位的时候.总是记不清究竟用哪个命令.所以做个总结. vonzhou@de16-C6100:~$ lsb_release -a No LSB modules are availab ...

随机推荐

  1. DAL层与BLL层的设计原则

    通用DAL层: 提供一个通用的DAL层的基础框架,其中包括所有实体类的基类,所有DAL类的基类,以及用来在实体类和数据表以及实体类字段和数据表字段之间Mapping的Attributes.此层作为核心 ...

  2. C和C++中结构体(struct)、联合体(union)、枚举(enum)的区别

    C++对C语言的结构.联合.枚举 这3种数据类型进行了扩展. 1.C++定义的结构名.联合名.枚举名 都是 类型名,可以直接用于变量的声明或定义.即在C++中定义变量时不必在结构名.联合名.枚举名 前 ...

  3. 研究CPU的好文章以及博客

    留个爪,有空仔细看: http://blog.csdn.net/zhangxinrun/article/details/6918862 http://blog.csdn.net/gaijf/artic ...

  4. AlarmManager.RTC和ELAPSED_REALTIME的区别

    AlarmManager.RTC,硬件闹钟,不唤醒手机(也可能是其它设备)休眠:当手机休眠时不发射闹钟. AlarmManager.RTC_WAKEUP,硬件闹钟,当闹钟发躰时唤醒手机休眠: Alar ...

  5. DWR与AJAX

    DWR与AJAX的微妙关系 2015-08-14 10:20 447人阅读 评论(0) 收藏 举报 本文章已收录于:   // ' + obj.name + "  "; html ...

  6. linux 大量的TIME_WAIT解决办法

    发现存在大量TIME_WAIT状态的连接tcp        0      0 127.0.0.1:3306              127.0.0.1:41378             TIME ...

  7. springboot源码解析 - 构建SpringApplication

    1 package com.microservice.framework; 2 3 import org.springframework.boot.SpringApplication; 4 impor ...

  8. 【coursera笔记】Machine Learning(Week6)

    发现自己不写总结真是件很恶劣的事情,好多学的东西没有自己总结都忘记了.所以决定从今天开始,学东西的时候一定跟上总结. 我写的东西大多数是自己通俗的总结,不太喜欢写严格的定义或者证明,写了也记不住,欢迎 ...

  9. Linux之守护进程

    一.守护进程概述 在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进 程.为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一 ...

  10. Python 中 os.path模板

    os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...