gpt4 book ai didi

c - C 可执行文件在两台不同 Linux 计算机上的资源分配

转载 作者:行者123 更新时间:2023-12-03 09:51:34 25 4
gpt4 key购买 nike

我正在两台不同的 Linux 计算机(华为笔记本电脑 8GB RAM 上的 Arch,iMac 2017 32GB RAM 上的 Ubuntu)上编译并运行以下 c 文件。

#include <stdio.h>
#include <sys/resource.h>

long get_mem_usage()
{
struct rusage myusage;
getrusage(RUSAGE_SELF, &myusage);
return myusage.ru_maxrss;
}

int main()
{
printf("usage: %ld\n", get_mem_usage());
return 0;
}

编译器是:gcc (Ubuntu 9.2.1-9ubuntu2) 9.2.1

gcc(Arch Linux 9.3.0-1)9.3.0

在 Ubuntu 上,我始终得到:

usage: 2432
usage: 2432
usage: 2432

在 Arch 上,输出不一致且更大:

usage: 100584
usage: 100964
usage: 100524

我很困惑为什么这些值在两台计算机/发行版之间有如此大的差异。这种内存分配模式的原因是什么?分配这些内存资源的是编译器吗?还是内核决定内存分配?

最佳答案

可执行文件很可能与其他几个进程共享内存。我停止了桌面环境并杀死了大部分不需要的程序,并得到了一致的值 1500。尽管启用了桌面管理器,但分配给进程的内存大小各不相同。

关于c - C 可执行文件在两台不同 Linux 计算机上的资源分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61265703/

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