【问题标题】:Programmatically get amount of RAM installed on OS X以编程方式获取安装在 OS X 上的 RAM 数量
【发布时间】:2009-09-08 22:35:07
【问题描述】:

我正在使用安装了 8 gigs 内存的机器,我正在尝试以编程方式确定机器中安装了多少内存。我已经尝试使用 sysctlbyname() 来获取安装的内存量,但它似乎仅限于返回有符号的 32 位整数。

uint64_t total = 0;
size_t size = sizeof(total);
if( !sysctlbyname("hw.physmem", &total, &size, NULL, 0) )
     m_totalMemory = total;

上面的代码,无论传入什么类型的sysctlbyname,总是在总变量中返回2147483648。我一直在通过 IOKit 和 IORegistryExplorer 寻找另一种确定已安装内存的方法,但到目前为止还没有找到任何结果。我在 IORegistryExplorer 中找到了 IODeviceTree:/memory,但其中没有大小字段。我也没有在 IO Registry 的其他任何地方找到任何东西。有没有办法通过 IOKit 访问这些信息,或者有办法让 sysctlbyname 返回超过 32 位的有符号整数?

【问题讨论】:

    标签: c++ macos memory iokit


    【解决方案1】:

    您可以使用sysctl() 并查询HW_MEMSIZE。这会将内存大小返回为64 位整数,而不是默认的32 位整数。

    man page 提供详细信息。

    【讨论】:

    • 当我也看到您的评论时,我只是在手册页中找到了这个。谢谢!
    【解决方案2】:

    简单的方法:

    [[NSProcessInfo processInfo] physicalMemory]
    

    【讨论】:

    • 不幸的是,我们使用的是 C++ 而不是 Objective-C
    • 它们不是相互排斥的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 2013-07-16
    相关资源
    最近更新 更多