Linux内存那些事 -- VSS、RSS、PSS、USS

1、背景

如果一个进程内存消耗太多,那么会导致整个系统内存紧张,而出现OOM等。所以我们经常会需要统计整个系统各个进程内存消耗的情况。一般对一个进程的内存的表示有4种方式:VSS、RSS、PSS、USS,那么什么时候应该用哪种方式统计呢?

我们需要先了解他们的差别:

VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的全部内存,以及分配但未使用内存)
RSS- Resident Set Size 实际使用物理内存(包含共享库占用的全部内存)
PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

2、例子

2.1 无内存分配的helloworld

我们写一个helloworld程序,仅仅打印点东西出来:

#include <stdio.h>

int main()
{

        printf("======== begin\n");

//      char aa[1048576*2];
//      memset(aa, 0, sizeof(aa));

//      printf("======== end size:%d\n", sizeof(aa));


        while(1)
        {
//              sleep(5);
        }

        return 0;
}

注意:以上循环里我把sleep那一行注释掉了,目的是通过top查看的时候方便看到其结果。

我们编译,运行,然后top看结果:

$ gcc main.c -o mymain 
$ ./mymain &
[1] 9454
$ ======== begin

$ top

top - 09:24:49 up 22:16,  1 user,  load average: 1.62, 1.29, 1.11
Tasks: 160 total,  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值