查看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: 1000 1000 1000 1000
Gid: 1000 1000 1000 1000
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 这个就是现在实际占用的