Linux系统内存使用

使用linux操作系统很多年了,但是对于内存使用不是太了解(估计很多人都不太懂),正好最近有个任务要降低程序的内存使用(要在一个服务器上同时跑更多的程序,内存成为瓶颈),就稍微深入了解了一下linux内存的使用说明。

一般来说看内存使用一般使用top命令,top命令的输出大致如下:


  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       
25335 odin      20   0 37.7g  34g 9.3g S 610.7 27.4  19127:31 norm_lquery2                                                                  
5708 odin      20   0 37.8g  34g 9.3g S 608.0 27.5  18311:43 norm_lquery1

其中VIRT表示虚存(virtual memory size),是程序在虚拟程序空间中占用的所有空间。
RES表示实存(resident set size),是程序停留在物理内存中的内容,和我们一般说的占用的内存含义比较相似,如果程序访问不多而系统内存比较紧张,RES中的内容就可能被替换到swap空间,再次访问时就会造成缺页错误,并将内容再次替换到RES中。
SHR表示的是共享内存(shared memory size),如果程序调用命令,使用了共享内存,就是在这个位置体现出来。

虚存和实存一般比较容易搞混,主要的区别是:有没有占用物理内存。比如如果程序使用new或者申请了共享内存,操作系统就在虚拟内存表中申请了空间,但是如果程序没有访问这些空间,则不会触发缺页错误,也就不会占用物理内存,也就不会在RES中体现出来。

猜你喜欢

转载自onmyway-1985.iteye.com/blog/2323812
今日推荐