1、Linux进程占用内存计算方法
进入top,按f选择swap, code, data; 按M根据内存排序。
html
总结:
VIRT 虚拟内存中含有共享库、共享内存、栈、堆,全部已申请的总内存空间。
RES 是进程正在使用的内存空间(栈、堆),申请内存后该内存段已被从新赋值。
SHR 是共享内存正在使用的空间。
SWAP 交换的是已经申请,但没有使用的空间,包括(栈、堆、共享内存)。
DATA 是进程栈、堆申请的总空间。
node
VIRT=RES+SWAP
VIRT=CODE+DATA+SHR+SWAP中共享库/内存
SHR:内存中共享库/内存实际占用
进程代码和堆栈实际占用内存=RES-SHR
RES和SWAP中都包含共享库/内存
CODE+DATA不包含共享库/内存占用。缓存
2、Linux如何查看空间内存有多少
free和top显示的内存容易让人混淆。下面分析一下实际占用内存和空闲内存。
free默认显示的单位是KB。
实际使用内存和空闲内存看第二行。
实际占用内存=used - buffers - cached
空闲内存=free + buffers + cached
对操做系统来说是Mem的参数.buffers/cached 都是属于被使用.
对应用程序来说是(-/+ buffers/cach).buffers/cached 是等同可用的,由于buffer/cached是为了提升程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。
除了对dentry进行缓存(用于VFS,加速文件路 径名到inode的转换), 还采起了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache能有效缩短了 I/O系统调用(好比read,write,getdents)的时间。操作系统