linux内存使用free备忘

在Linux下查看内存我们一般用 free -m 命令:

             total       used       free     shared    buffers     cached
Mem:          1991        505       1486          0        132        223
-/+ buffers/cache:        149       1841
Swap:         3999          0       3999

下面是对这些数值的解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。

为了区分第二行(Mem)的used/free 与 第三行(-/+ buffers/cache:) 的used/free的区别,给出如下的示意图。



第二行是从操作系统的角度来看,它的总内存是1991M,可用内存是1486M(图中B区域),已用内存是505M(图中A区域)。


第三行所是从应用程序角度来看,对于应用程序来说,buffers/cached (图中C区域)是可用的,所以 可用内存 = 系统可用内存(B) + buffers/cached(C)。
如上例:
1841 = 1486+132+223

 

我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。

所以 实际空闲内存=B+C,也等于1991-(A-C)

 

 

 

 

 

 

 

cat /proc/meminfo
MemTotal:      2038912 kB
MemFree:       1521296 kB
Buffers:        135656 kB
Cached:         228912 kB
SwapCached:          0 kB
Active:         266920 kB
Inactive:       197592 kB
HighTotal:     1142816 kB
HighFree:       801928 kB
LowTotal:       896096 kB
LowFree:        719368 kB
SwapTotal:     4095992 kB
SwapFree:      4095992 kB
Dirty:              96 kB
Writeback:           0 kB
AnonPages:      100076 kB
Mapped:          12732 kB
Slab:            37944 kB
PageTables:       3856 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   5115448 kB
Committed_AS: 6229784 kB
VmallocTotal:   114680 kB
VmallocUsed:      8408 kB
VmallocChunk:   106076 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     4096 kB

查看/proc/kcore文件的大小(内存镜像):
[root@scs-2 tmp]# ll -h /proc/kcore
-r-------- 1 root root 4.1G Jun 12 12:04 /proc/kcore

备注:

占用内存的测量

测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。

/proc/meminfo 机器的内存使用信息

/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。

/proc/pid/statm 进程所占用的内存

[root@localhost ~]# cat /proc/self/statm

654 57 44 0 0 334 0

输出解释

CPU 以及CPU0。。。的每行的每个参数意思(以第一行为例)为:

参数 解释 /proc//status

Size (pages) 任务虚拟地址空间的大小 VmSize/4

Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4

Shared(pages) 共享页数 0

Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4

Lrs(pages) 被映像到任务的虚拟内存空间的库的大小 VmLib/4

Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )4

dt(pages) 04


你可能感兴趣的:(linux,职场,备忘,休闲,Free命令)