在命令行上可以使用'free'实用程序和'cat / proc / meminfo'找到它。 通过以下方式以编程方式从Linux中找出物理RAM大小的不同方法是什么:
可以使用哪些API调用?
答案 0 :(得分:4)
#include <unistd.h>
long long physical_mem_bytes = (long long) sysconf (_SC_PHYS_PAGES) * sysconf (_SC_PAGESIZE);
除了命令行ulimit之外,我不知道为单个进程找到最大内存的方法。
答案 1 :(得分:1)
以编程方式,Linux不会告诉你实际的物理尺寸。相反,您应该从SMBIOS读取此信息,例如
sudo dmidecode -t memory | fgrep -ie 'size:'
这将给出如下结果(来自一个有4个RAM库的盒子,只安装了2个):
Maximum Memory Module Size: 16384 MB
Maximum Total Memory Size: 65536 MB
Installed Size: 2048 MB (Single-bank Connection)
Enabled Size: 2048 MB (Single-bank Connection)
Installed Size: Not Installed
Enabled Size: Not Installed
Installed Size: 2048 MB (Single-bank Connection)
Enabled Size: 2048 MB (Single-bank Connection)
Installed Size: Not Installed
Enabled Size: Not Installed
Size: 2048 MB
Size: No Module Installed
Size: 2048 MB
Size: No Module Installed
添加报告的大小(或Enabled Size
s,但有些BIOS经验不报告)获得(在这种情况下)4096 MB。 (自动解析和算术的代码的额外分数,但你可能几乎可靠地做到这一点。)
要检查您的计算,请运行
fgrep -e 'MemTotal:' /proc/meminfo
/proc/meminfo
报告的值不应超过您从dmidecode
计算的值。在这种情况下,凭经验我得到
MemTotal: 3988616 kB
答案 2 :(得分:-1)
cat /proc/meminfo
答案 3 :(得分:-1)
特别是从记忆中,我从Jared所说的那里得到了这个结果
sudo dmidecode -t memory
在那里你可以阅读每个内存插槽的规格,所以你会读到类似2048MB的东西,在我的情况下我有2个是4gb,尽管我的非PAE内核只显示大约3.3gb而所有其他应用程序都不会说真正的物理记忆,只有dmidecode,thx!