知识为进步之母,而进步又为富强之源泉。这篇文章主要讲述Linux C进程内存占用查看相关的知识,希望能为你提供帮助。
将下面的代码编译链接为可执行文件 ??read_statm?
??,使用时传入需要查看的 ??pid?
? 号即可。
// read_statm.c
#include < stdio.h>
#include < stdlib.h>
#include < unistd.h>
int main(int argc, char *argv[])
FILE *fp;
char FILE_NAME[50] = 0;
char data_buf[50] = 0;
sprintf(FILE_NAME, "/proc/%d/statm", argv[1]);
fp = fopen(FILE_NAME, "r");
fgets(data_buf, 50, fp);
printf("VIRT\\tRES\\tSHR\\tCODE\\tLRS\\tDATA\\tDIRTY\\n");
printf("%s\\n", data_buf);
exit(0);
【Linux C进程内存占用查看】运行结果:
通过查看进程 ?
?/proc/PID/statm?
?? 文件内容,获取内存页信息,该文件含有 7 列,以内存页计算各值,如内存页大小为 4KiB,因此,将内存页的数量乘以 4,就是 KiB 计算的内存占用大小,??VIRT?
??、??RES?
??、??SHR?
??、??CODE?
??、??LRS?
??、??DATA?
??、??DIRTY?
??。其中 ??LRS?
??、??DIRTY?
? 不再使用。- ?
?VIRT?
? Virtual Memory Size:进程使用的所有虚拟内存,包括代码 code、数据 data、共享库 shared libraries、被换出 swap out 到交换区和映射了但尚未载入实体内存的部分。 - ?
?RES?
? Resident Memory Size:进程所占用的所有实体内存(Physical memory),不包括被换出到交换区的部分。 - ?
?SHR?
?? Shared Memory Size:进程可读的全部共享实体内存,并非所有部分都包含在??RES?
? 中,它反映了可能被其他进程共享的内存部分。 - ?
?CODE?
? Code Size:进程所占用的实体内存中,可执行代码所占用的内存大小。驻存代码集合。 - ?
?DATA?
? DATA+Stack Size:进程所占用的虚拟内存中,栈区域与非栈区域中非共享可写区域之和。
推荐阅读
- Linux CPOSIX 共享内存使用
- Linux2.4 任务响应模型
- ensp综合端口基础配置(Hybird+access+Trunk)
- 3种方式!让你3秒在51CTO博客快速发布一篇博文
- PL/SQL集合(table)嵌套表操作实例讲解实例
- PL/SQL 用户自定义异常操作实例
- PL/SQL系统定义的异常操作实例讲解
- PL/SQL包(package)操作实例讲解
- PL/SQL字符串声明字符串函数和操作符实例源码说明