C / C ++以编程方式获得空闲内存

时间:2015-11-29 21:57:35

标签: c memory

如何使用C / C ++程序获取OSX和Linux平台中当前的“免费”内存?在OSX中,我可以通过sysctlsysconf系统调用来获取“最大”的内存量。但是我不知道如何在运行时获得可用内存。

1 个答案:

答案 0 :(得分:4)

运行时的可用内存总量没有。由您的进程分配并有效使用的内存很可能以前由另一个进程或文件系统缓存使用,您实际上可以分配和使用比主板上实际可用内存更多的内存(尽管效率非常低)。 Linux和Windows也是如此:所有这些操作系统都使用虚拟内存。

您可以依靠系统信息来告诉您可用的物理内存量(但在虚拟机中这可能是假的)。在交换到压缩内存甚至SDD之前确定可用内存量是更加困难和系统特定的,它在操作系统的不同版本之间存在差异。

根据经验,使用配置文件或环境变量告诉您​​的程序要使用多少内存并调整特定环境的数量:

  • 如果您的程序在专用系统上执行,它应该为系统留出足够的内存,以便正常运行并获得相当数量的磁盘缓存。使用top(Linux)或活动监视器(OS / X)等工具查看压缩内存量或系统最终使用的交换量,并减少设置以最大限度地减少这些内容。

  • 如果您的程序需要与执行其操作的用户共存,则应显着减少此配额,以留出至少一半可用于其他任务的内存。