gpt4 book ai didi

linux - 最大驻留集大小是什么意思?

转载 作者:行者123 更新时间:2023-12-02 02:39:19 24 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
int i = 0;
struct rusage r_usage;
while (++i <= 10) {
void *m = malloc(20*1024*1024);
memset(m,0,20*1024*1024);
getrusage(RUSAGE_SELF,&r_usage);
printf("Memory usage = %ld\n",r_usage.ru_maxrss);
sleep (3);
}
printf("\nAllocated memory, sleeping ten seconds after which we will check again...\n\n");
sleep (10);
getrusage(RUSAGE_SELF,&r_usage);
printf("Memory usage = %ld\n",r_usage.ru_maxrss);


return 0;
}

上面的代码使用了 rusage 结构的 ru_maxrss 属性。它给出了最大驻留集大小的值。这是什么意思?每次执行程序时,它都会给出不同的值。那么请解释一下这段代码的输出?

enter image description here

enter image description here

这些是相同代码的两次执行的屏幕截图,它们给出了不同的输出,如何解释这些数字或者可以从这两个输出中解释什么?

最佳答案

Resident set size (RSS)粗略地说,是指在给定时间点分配给进程的物理内存总量。它不计算已换出的页面,或从文件映射但当前未加载到物理内存中的页面。

“最大RSS”是指自进程诞生以来RSS的最大值,即它有史以来最大的。所以这个数字告诉你你的进程在任何时刻使用过的最大物理内存量。

例如,如果操作系统决定在不同时间换出不同数量的程序内存,它可能会因一次运行而异。这个决定部分取决于系统的其余部分正在做什么,以及其他地方需要物理内存。

关于linux - 最大驻留集大小是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60779173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com