我有一个 Objective-C 应用程序,旨在使用 WebKit 视图长时间运行。经过一段时间后,应用程序会建立相当数量的内存,因此我想根据最终用户的要求准确地显示内存使用情况。在 OS XI 上的 Activity Monitor 中,可以看到我的应用程序 Real Memory 和 Private Memory 的两个内存值。从我读过的内容来看,Private 是该过程所拥有的一切,而 Real 是估计值。我应该相信什么?是否有一个特定的公式可以用来计算确切的使用量而不是 OS X 报告的内容?
不是我的专业领域。
如果您担心内存泄漏,您应该使用Apple 提供的各种工具来调试它。
实内存是进程使用的实际物理内存。
专用内存是仅由该进程使用的物理内存。
虚拟内存是进程的整个虚拟内存的大小,包括当前未驻留在物理 RAM 中的那些页面。
如果您有泄漏,实际上很难通过查看这些数字来判断。例如,一个被 malloced 然后泄漏的块将永远不会被再次引用,因此它最终会被换出。它将是虚拟内存的一部分,但不是常驻内存的一部分。所以如果你有泄漏,虚拟内存会随着时间的推移逐渐增加。
另一方面,如果 malloc 找不到要分配的未使用内存块,则虚拟内存会增加,但当 free 返还内存时,虚拟内存不会减少。因此,如果您分配大量 RAM,VM 将增加,但即使您正确释放它,它也永远不会再次减少。如果您也有泄漏,malloc 需要很长时间才能用完回收的 VM,这意味着您可能不会注意到它。
因此,请使用专门构建的泄漏检测工具。
| 归档时间: |
|
| 查看次数: |
5265 次 |
| 最近记录: |