Linux C进程内存占用查看

Posted Jiamings

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

通过查看进程 ​​/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 C进程内存占用查看的主要内容,如果未能解决你的问题,请参考以下文章

Linux中查看进程占用内存的情况

Linux下如何查看哪个进程占用内存多?

linux 下怎么查看一个进程占用内存大小

linux 怎样查看内存被哪个进程占用

linux如何查看内存被哪些进程占用

如何查看 进程内存使用情况 linux