gpt4 book ai didi

macos - 真实内存 VS。私有(private)内存

转载 作者:行者123 更新时间:2023-12-03 21:40:21 29 4
gpt4 key购买 nike

我有一个 Objective-C 应用程序,旨在使用 WebKit View 长时间运行。随着时间的推移,应用程序会建立相当多的内存,所以我想根据要求准确地向最终用户显示内存使用情况。在 OS X 上的 Activity Monitor 中,我看到我的应用程序 Real Memory 和 Private Memory 的两个内存值。从我读过的内容来看,Private 是该过程所拥有的一切,而 Real 是一个估计值。我应该相信什么?是否有一个特定的公式可以用来计算确切的使用情况而不是 OS X 报告的内容?

不是我的专业领域。

最佳答案

如果你担心内存泄漏,你应该使用 the various tools provided by Apple调试它。

实际内存是进程使用的实际物理内存。

私有(private)内存是仅由该进程使用的物理内存。

虚拟内存是进程的整个虚拟内存的大小,包括那些当前不驻留在物理 RAM 中的页面。

如果您有泄漏,实际上很难通过查看这些数字来判断。例如,一个被分配然后泄露的 block 将永远不会被再次引用,所以它最终会被换出。它将是虚拟内存的一部分,但不是常驻内存的一部分。因此,如果您有泄漏,虚拟内存会随着时间的推移逐渐增加。

另一方面,如果 malloc 找不到未使用的内存块来分配,则虚拟内存会增加,但当 free 归还内存时,虚拟内存不会减少。因此,如果您 malloc 大量 RAM,VM 会增加,但即使您正确释放它,它也不会再减少。如果你也有泄漏,malloc 需要很长时间才能用完回收的 VM,这意味着你可能不会注意到它。

因此,请使用专用的泄漏检测工具。

关于macos - 真实内存 VS。私有(private)内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436860/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com