Memory 检查正在运行的程序中可用RAM的数量
在一次工作面试中,我的一位朋友被要求编写一个程序来测量可用RAM的数量。预期的答案是以二进制搜索方式使用Memory 检查正在运行的程序中可用RAM的数量,memory,malloc,Memory,Malloc,在一次工作面试中,我的一位朋友被要求编写一个程序来测量可用RAM的数量。预期的答案是以二进制搜索方式使用malloc():分配越来越大的内存部分,直到收到故障消息,减少部分大小,并对分配的内存量求和 我相信这种方法将测量虚拟内存的数量,而不是物理内存的数量。但我对这件事很好奇 是否有一种方法可以在不使用exec(dmesg | grep-i memory)的情况下从程序中判断可用RAM的数量?您是对的:malloc()不区分物理内存和虚拟内存。事实上,这就是虚拟内存的全部意义:使这些细节与程序无
malloc()
:分配越来越大的内存部分,直到收到故障消息,减少部分大小,并对分配的内存量求和
我相信这种方法将测量虚拟内存的数量,而不是物理内存的数量。但我对这件事很好奇
是否有一种方法可以在不使用exec(dmesg | grep-i memory)的情况下从程序中判断可用RAM的数量?您是对的:malloc()不区分物理内存和虚拟内存。事实上,这就是虚拟内存的全部意义:使这些细节与程序无关
您可以找到,但它是特定于操作系统的。例如,.实现这一点的唯一方法是使用一些特定于操作系统的功能。使用malloc()是无用的,原因有很多:
- 它测量虚拟内存
- 操作系统可能在内存分配上有每个进程的上限
- 分配比实际可用内存多得多的内存通常会降低平台的稳定性,以至于问题中建议的“返回一个”算法可能无法工作
(当然,虚拟内存>=RAM)听起来像是每日FTW的一个不错的求职面试故事。听起来像是一个测试受访者的内存管理知识的问题——虚拟内存等。不过这是一个不错的问题。它测试操作系统和内存管理知识以及创造力。你可以在不了解内存管理的情况下提出解决方案。谢谢。procfs-OS依赖中有一些很好的信息,但是非常有用。