【发布时间】:2010-12-13 01:52:13
【问题描述】:
我想获取每个进程和系统范围的内存使用信息。在 Windows 中,这很容易。 GetProcessMemoryInfo 和 GlobalMemoryStatusEx 可以非常轻松地完成这些工作。例如,GetProcessMemoryInfo 给出给定进程的“PeakWorkingSetSize”。 GlobalMemoryStatusEx 返回系统范围的可用内存。
但是,我需要在 Linux 上进行。我正在尝试查找与 GetProcessMemoryInfo 和 GlobalMemoryStatusEx 等效的 Linux 系统 API。
我找到了“getrusage”。但是,struct rusage 中的 max 'ru_maxrss'(驻留集大小)只是零,没有实现。另外,我不知道要获得系统范围的空闲内存。
目前的解决方法,我正在使用“system("ps -p %my_pid -o vsz,rsz");”。手动记录到文件。但是,处理数据很脏,不方便。
我想知道一些用于此目的的精美 Linux API。
【问题讨论】:
-
您想要特定进程使用的内存量还是特定线程正在使用的内存量?
-
@ChadNC,我想要每个进程和整个系统,我解决了这个问题。
标签: c linux winapi memory-management