Linux内存计算方法

一、Linux进程占用内存计算方法

进入top,按f选择swap, code, data; 按M根据内存排序。
Linux内存计算方法_第1张图片

总结:
VIRT 虚拟内存中含有共享库、共享内存、栈、堆,所有已申请的总内存空间。
RES  是进程正在使用的内存空间(栈、堆),申请内存后该内存段已被重新赋值。
SHR  是共享内存正在使用的空间。
SWAP 交换的是已经申请,但没有使用的空间,包括(栈、堆、共享内存)。
DATA 是进程栈、堆申请的总空间。
 

VIRT=RES+SWAP
VIRT=CODE+DATA+SHR+SWAP中共享库/内存
SHR:内存中共享库/内存实际占用
进程代码和堆栈实际占用内存=RES-SHR
RES和SWAP中都包含共享库/内存
CODE+DATA不包含共享库/内存占用。

Linux内存计算方法_第2张图片

参考:https://blog.csdn.net/u011547375/article/details/9851455

 

 

二、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)的时间。

参考:https://zhidao.baidu.com/question/84777164.html

 

你可能感兴趣的:(Linux)