在macOS上计算每个进程的内存使用情况

3

我目前正在进行一个小型的项目,想要添加一些关于CPU使用率/内存使用率/打开的文件描述符等方面的统计信息,但是需要按照每个进程来统计。

我已经成功地实现了CPU使用率的统计,但是我遇到的问题是内存。我找不到任何API可以检索或计算类似于“活动监视器”在进程信息部分中所做的内存使用情况。

有哪些API可用于计算“真实/虚拟/共享/私有”内存使用情况?我已经使用过host_statistics(),但是从我所看到的内容来看,它只提供了基本的VM信息。我还查看了task_info(),但这也没有我要寻找的内存细分。

1个回答

2

苹果公司公开了top实用程序的源代码。这将有助于您理解它显示的所有进程信息的访问方式,其中包括一些不同的内存统计数据。


我开始研究这个问题,但是对于他们如何计算进程的私有/共享内存值还不太清楚。 - slagathor
1
算了,我找到了处理私有/共享计算的代码部分。原来你需要使用mach_vm_region()遍历虚拟内存区域。 - slagathor
听起来差不多就是这样。我猜它并不是100%可靠的,因为在你遍历它们的时候,进程可能会修改它们的区域,但是对于显示统计信息来说,它应该足够了。 (顺便说一句,很抱歉我没有提供完整的答案,但我不是心中已经知道细节,也没有时间自己研究,所以我想指向我开始的方向比什么都不做要好!) - pmdj
1
没关系。这至少证实了我应该寻找的方向是正确的。 - slagathor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接