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

What does maximum resident set size mean?

#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;
}

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

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

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

"Maximum RSS"表示自进程诞生以来RSS的最大值,即有史以来最大的。所以这个数字告诉你你的进程在任何一个瞬间使用过的最大物理内存量。

如果 运行 下一个 运行 决定在不同时间换出不同数量的程序内存,那么下一个可能会有所不同。这个决定将部分取决于系统的其余部分正在做什么,以及还需要物理内存的地方。