在实际工作中有时需要程序打印出某个进程的内存占用情况以作参考, 下面介绍一种通过Linux下的伪文件系统/proc
计算某进程内存占用的程序实现方法.
首先, 为什么会有所谓的 伪文件 呢. Linux系统的文件类型大致可分为三类: 普通文件, 目录文件和伪文件. 伪文件不是用来存储数据的, 因此这些文件不占用磁盘空间, 只是存在于内存中. /proc
让你可以与内核内部数据进行交互, 获取有关进程的有用信息.
下面主要介绍一下 /proc
下面的四个文件: /proc/stat
, /proc/meminfo
, /proc/<pid>/stat
, /proc/<pid>/status
.
/proc/stat
存放系统的cpu时间, 该文件包含了所有cpu活动的信息.
/proc/meminfo
存放系统的内存信息, 通过文件中各个变量的名字便可知其代表的信息.
/proc/<pid>/stat
存放某个进程的cpu信息
/proc/<pid>/status
存放某个进程的cpu信息以及一些综合信息
以上数据都可以通过文件读取的方式来获取. 根据自己实验的需要可以计算相应的数据, 比如 pmem = VmRSS/MemTotal*100
等等.
下面只是贴出一个简单的获取某进程当前时刻所占用的实际内存的c代码实现例子.
测试文件: