知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

如何查看linux闲置和占用的内存

发布时间:2014-09-05 14:05:26作者:知识屋

如何查看linux闲置和占用的内存
 
在Linux下查看内存我们一般用free命令, 也可以加-m参数,以M为单位显示。不加参数默认以kb为单位。 
 
[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 
 
下面是对Linux查看内存命令中这些数值的解释: 
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命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的 
所以从应用程序的角度来说, 
 
可用内存(空闲内存) = 系统free memory + buffers + cached = 系统total memory - 系统used memory 
 
如上例: 
2795064=16176+110652+2668236 
 
接下来解释什么时候内存会被交换,以及按什么方交换。 当可用内存少于额定值的时候,就会开会进行交换。 
 
补充1 
 
Linux查看内存命令时如何看额定值 
 
cat /proc/meminfo 
[root@scs-2 tmp]# cat /proc/meminfo 
 
另外不建议查看/proc/kcore来判断的内存大小, 这个值并不准确。kcore这个文件指的的可被内核分配的空间,但根据实验来看,并非如此。其还提示说,在64bit的OS中,这个文件大小最大可以达到128T,因为64bit的OS最大寻址内存范围局限128T。 
[root@scs-2 tmp]# ll -h /proc/kcore 
-r-------- 1 root root 4.1G Jun 12 12:04 /proc/kcore 
 
补充2 
 
如何产看一个进程占用内存的大小 
 
测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。 
/proc/meminfo 机器的内存使用信息 
/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。 
/proc/pid/statm 进程所占用的内存 
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜