有人可以告诉我,什么样的记忆是脏/居住的,它们来自哪里? 常驻内存与Mac OS的“有线内存”意味着相同吗?
这就是我对Mac OS内存的看法:
有线:这是指内核代码等。内存不应该 永远被移出RAM。也称为居民记忆。
共享:两个或多个进程共享的内存。都 进程会显示这么多的内存,所以它可以是一点点 误导了实际使用的内存量。
Real:这是报告的应用程序的“真实”内存使用情况 by task_info() - 粗略计算物理页面的数量 目前的流程有。 (RSIZE)
私有:这是一个进程仅依靠它自己使用的内存 用于驻留内存。 (RPRVT)
虚拟:进程中的地址空间总量 映射到任何东西 - 这是否是一个任意大的空间 变量或任何东西 - 它不等于实际的VM使用。 (VSIZE)
活动:当前标记为活动的内存,并使用RAM。
非活动:“不再使用非活动内存并且已经使用过 缓存到磁盘。它将保留在RAM中,直到另一个应用程序需要 空间。如果您将这些信息留在RAM中,对您有利 (或您的计算机的客户端)稍后再回来。“ - Mac OS X帮助
免费:实际可用的RAM数量,没有任何数据。
答案 0 :(得分:33)
差不多一年了,我明白了。
清理记忆
清理内存是可以重新创建的内存,在iOS上它是内存:
还要注意这种情况:当你的应用程序链接到框架时,干净的内存将增加框架二进制文件的大小。但大多数时候,只有部分二进制文件真正加载到物理内存中。
脏记忆
非清洁内存的所有内存都是脏内存,系统无法重新创建脏内存。
当存在内存压力时,系统将卸载一些干净的内存,当再次需要内存时,系统将重新创建它们。
但是对于脏内存,系统无法卸载它们,并且iOS没有交换机制,因此脏内存将始终保存在物理内存中,直到达到一定限制,然后您的应用程序将被终止并且所有内存都将被它由系统回收。
虚拟内存
virtual memory = clean memory + dirty memory.
这意味着虚拟内存就是你想要的所有内存。
常驻记忆
resident memory = dirty memory + clean memory that loaded in physical memory
驻留内存是物理内存中真正加载的内存,它意味着所有脏内存和清洁内存的一部分。
<强>结论强>
任何时候都是如此:
virtual memory == (clean memory + dirty memory) > resident memory > dirty memory
如果您担心应用程序正在使用的物理内存(这是因内存不足而导致应用程序终止的关键原因),您应该主要关注驻留内存。
答案 1 :(得分:7)
驻留内存是为您的应用分配的内存。脏内存是由于iOS中缺少分页系统而无法自动解除分配的驻留内存。我在http://liam.flookes.com/wp/2012/05/03/finding-ios-memory/找到了这些信息。然后,对于您列出的内存类型,iOS中的驻留内存更接近真实或私有。根据我的理解,在iOS中你应该最关心的是脏内存,因为它可以确定你的应用程序是否在后台暂停时被杀死,如果内存不足的情况。