查看linux进程内存的使用情况
要查看linux内存的使用情况,使用free命令 加上-m选项是以M来表示的,不加是以k来表示的
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。
这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是802880KB,已用内存是742616KB,其中包括,内核(OS)使用+Application(X,oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached.
1244664=802880 + 121160 + 320624 也就是还有1G多的内存可以用
可以看出 这个值就是-/+ buffers/cache: 这一行的free
所以查看linux的内存查大概用情况就看-/+ buffers/cache:这一行就可以
这里实际占用300832 也就是300m左右 还可以使用1244664 1个多G
查看某一个进程的内存使用情况
第一种方法:ps aux|grep 进程名
例如:ps aux|grep pencil
alecyan 2811 0.0 2.8 112012 44520 ? Sl 11:06 0:00 pencil
alecyan 2837 0.0 0.0 6364 868 pts/0 S+ 11:14 0:00 grep --color=auto pencil
看到两个进程,第一个就是我们要找的进程,第二个是我们用grep的命令时的进程
上面的112012是任务虚拟地址空间的大小 ,44520应用程序正在使用的物理内存的大小,这个44520其实就是我们关心的
第二种方法:
cat /proc/进程号/status
例如:cat /proc/2811/status
ame:pencil
State:S (sleeping)
Tgid:2811
Pid:2811
PPid:1281
TracerPid:0
Uid:1000100010001000
Gid:1000100010001000
FDSize:32
Groups:4 24 27 30 46 108 124 1000
VmPeak: 112016 kB
VmSize: 111472 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 44520 kB
VmRSS: 44108 kB
VmData: 24612 kB
VmStk: 136 kB
VmExe: 816 kB
VmLib: 70332 kB
VmPTE: 200 kB
VmSwap: 0 kB
Threads:2
SigQ:0/11946
SigPnd:0000000000000000
ShdPnd:0000000000000000
SigBlk:0000000000000000
SigIgn:0000000000001000
SigCgt:0000000180010000
CapInh:0000000000000000
CapPrm:0000000000000000
CapEff:0000000000000000
CapBnd:0000001fffffffff
Seccomp:0
Cpus_allowed:ff
Cpus_allowed_list:0-7
Mems_allowed:1
Mems_allowed_list:0
voluntary_ctxt_switches:771
nonvoluntary_ctxt_switches:984
任务虚拟地址空间的大小 VmSize = 111472
应用程序正在使用的物理内存的大小 VmRSS = 44108 这个就是现在实际占用的