栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【Linux C】进程内存占用查看

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Linux C】进程内存占用查看

将下面的代码编译链接为可执行文件 read_statm,使用时传入需要查看的 pid 号即可。

// read_statm.c
#include 
#include 
#include 

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("VIRTtREStSHRtCODEtLRStDATAtDIRTYn");
	printf("%sn", data_buf);

	exit(0);
}

运行结果:

通过查看进程 /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:进程所占用的虚拟内存中,栈区域与非栈区域中非共享可写区域之和。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/744247.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号