我需要检索系统中存在的 RAM 总量以及当前正在使用的 RAM 总量,以便我可以计算百分比。这类似于:检索 MacOS X 上的系统信息? https://stackoverflow.com/questions/8736713/retrieve-system-information-on-macos-x
然而,在这个问题中,最好的答案建议如何通过读取来获取 RAM:
/usr/bin/vm_stat
由于我的程序的性质,我发现我并不是无法从该文件中读取 - 我需要一种方法来为我提供 RAM 信息,而无需简单地打开文件并从中读取。我正在寻找与函数调用有关的东西。最好是这样的:getTotalRam()
and getRamInUse()
.
我显然不希望它那么简单,但我一直在寻找除了从文件中读取之外的解决方案。
我正在运行 Mac OS X Snow Leopard,但最好能获得一个可以在所有当前 Mac OS X 平台(即 Lion)上运行的解决方案。
解决方案可以使用 C++、C 或 Obj-C 语言,但就我而言,C++ 是最好的解决方案,因此如果可能,请尝试使用 C++ 提供它。
获取机器的物理内存很简单sysctl
:
int mib [] = { CTL_HW, HW_MEMSIZE };
int64_t value = 0;
size_t length = sizeof(value);
if(-1 == sysctl(mib, 2, &value, &length, NULL, 0))
// An error occurred
// Physical memory is now in value
VM 统计数据只是稍微复杂一些:
mach_msg_type_number_t count = HOST_VM_INFO_COUNT;
vm_statistics_data_t vmstat;
if(KERN_SUCCESS != host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmstat, &count))
// An error occurred
然后,您可以使用 vmstat 中的数据来获取您想要的信息:
double total = vmstat.wire_count + vmstat.active_count + vmstat.inactive_count + vmstat.free_count;
double wired = vmstat.wire_count / total;
double active = vmstat.active_count / total;
double inactive = vmstat.inactive_count / total;
double free = vmstat.free_count / total;
还有一个 64 位版本的界面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)