分析Linux内存

转载 2007年09月27日 01:22:00
原贴:http://blog.chinaunix.net/u/26011/showart_327993.html

分析Linux内存
 
 
   前言:在Linux上不像在Windows上看内存那样方便,而且还有Swap这个新的概念,所以知道如何来看Linux内存还是有一定意义的.
 
在Linux下查看内存我们一般用command free
[root@nonamelinux ~]# free
total used free shared buffers cached
Mem: 386024 377116 8908 0 21280 155468
-/+ buffers/cache: 200368 185656
Swap: 393552 0 393552
下面是对这些数值的解释:
第二行(mem):
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解释了。
区别:
第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。
这 两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是8908KB,已用内存是377116KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached.
如上例:
185656=8908+21280+155468
接下来解释什么时候内存会被交换,以及按什么方交换。
当可用内存少于额定值的时候,就会开会进行交换.
如何看额定值(RHEL4.0):
#cat /proc/meminfo
交换将通过三个途径来减少系统中使用的物理页面的个数: 
1.减少缓冲与页面cache的大小,
2.将系统V类型的内存页面交换出去, 
3.换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。
事实上,少量地使用swap是不是影响到系统性能的。
下面是buffers与cached的区别。
buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.
cached是用来给文件做缓冲。
那就是说:buffers是用来存储,目录里面有什么内容,权限等等。
而cached直接用来记忆我们打开的文件,如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。
实验:在一台没有什么应用的机器上做会看得比较明显。记得实验只能做一次,如果想多做请换一个文件名。
#free
#man X
#free
#man X
#free
你可以先后比较一下free后显示buffers的大小。
另一个实验:
#free
#ls /dev
#free
你比较一下两个的大小,当然这个buffers随时都在增加,但你有ls过的话,增加的速度会变得快,这个就是buffers/chached的区别。

 

宋牧春: 多图详解Linux内存分配器slub

本文目录:1. 前言2. slub数据结构3. slub数据结构之间关系4. slub分配内存原理5. slub释放内存原理6. kmalloc作者简介:宋牧春,linux内核爱好者,2017年6月本...
  • juS3Ve
  • juS3Ve
  • 2018年01月20日 00:00
  • 87

linux内存占用分析

想必在Linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到V...
  • yin_pengpeng
  • yin_pengpeng
  • 2017年03月16日 21:23
  • 723

Linux下常用系统分析工具总结(CPU,网络,磁盘,内存)

http://os.51cto.com/art/201706/543760.htm?utm_source=tuicool&utm_medium=referral 对于程序员来说,整个计算...
  • u011001084
  • u011001084
  • 2017年07月03日 10:15
  • 374

linux 内存占用过大分析

1、使用 free -g 查看内存使用情况: 2、查看进程占用的内存情况: ps aux|awk '{sum+=$6} END {print sum/1024}' 结果发现占用了 1...
  • xiongzhichao
  • xiongzhichao
  • 2017年03月03日 14:42
  • 6506

Linux内存占用情况分析

Linux下如何查内存信息,如内存总量、已使用量、可使用量。 经常使用Windows操作系统的朋友,已经习惯了如果空闲的内存较多,心里比较踏实。 当使用Linux时,可能觉的Linux物理内存很快...
  • ladofwind
  • ladofwind
  • 2015年08月17日 12:08
  • 587

Linux下性能分析工具和内存泄露检测工具的简介(Valgrind和gprof)

valgrind通常用来成分析程序性能及程序中的内存泄露错误一 Valgrind工具集简绍Valgrind包含下列工具:1、memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。2、cal...
  • u014717036
  • u014717036
  • 2016年02月29日 09:33
  • 1390

Linux内存管技术分析

题目名称: Linux内存管技术分析指导教师: ...
  • jianjun365222
  • jianjun365222
  • 2008年03月25日 14:52
  • 247

Linux内存使用-free结果分析

Linux内存使用量查看free结果分析    Linux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念, 说到这里不得不骂MS,为什么在很多时候还有很大的物...
  • jmflovezlf
  • jmflovezlf
  • 2013年10月05日 21:40
  • 500

Linux中定位内存泄漏

1. 什么是内存泄漏内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的、大小任意的(内存块的大小可以在程序运行期决定)、使用完后必须显示释放的内存。应用程序一般使用malloc、realloc、ne...
  • ydyang1126
  • ydyang1126
  • 2017年05月23日 21:22
  • 537

Linux内存使用详解

我是一名程序员,那么我在这里以一个程序员的角度来讲解Linux内存的使用。 一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。 ...
  • u011839461
  • u011839461
  • 2013年10月17日 10:20
  • 738
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:分析Linux内存
举报原因:
原因补充:

(最多只允许输入30个字)