有人能告诉我,什么样的记忆是肮脏的/常驻的,它们是从哪里来的?驻留内存是否意味着与Mac的“有线内存”相同?
这就是我看到的关于Mac内存的内容:
连线:这指的是内核代码等等。不应该从RAM中移出的内存。也被称为常驻记忆。 共享:在两个或多个进程之间共享的内存。这两个进程都会显示出这么多的内存,因此对于实际使用的内存数量可能有一点误导。 Real :这是task_info()报告的应用程序的“真实”内存使用情况--对当前进程的物理页面数量的粗略统计。(RSIZE) 私有:这是进程单独使用的内存,在驻留内存中使用。(RPRVT) 虚拟:进程中映射到任何东西的地址空间总量--无论这是一个任意大的变量空间还是任何东西--它并不等同于实际的VM使用。(VSIZE) Active :当前标记为active的内存,并使用RAM。 非活动:“非活动内存不再被使用,并已被缓存到磁盘上。它将保留在RAM中,直到另一个应用程序需要空间。如果您(或您的计算机的一个客户端)稍后再来访问,则将这些信息留在RAM中对您有好处。”- Mac。 免费:在没有任何数据的情况下,RAM的实际可用量。
发布于 2013-10-08 04:05:30
快一年了,我想出来了。
干净内存
干净内存是可以重新创建的内存,在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如果您担心应用程序占用的物理内存(这是您的应用程序由于内存不足而终止的关键原因),您应该主要关注驻留内存。
发布于 2012-11-18 06:20:21
驻留内存是分配给应用程序的内存。脏内存是由于iOS中缺少分页系统而不能自动释放的驻留内存。我在http://liam.flookes.com/wp/2012/05/03/finding-ios-memory/找到了这个信息。然后,对于您列出的内存类型,iOS中的驻留内存更接近真实或私有内存。根据我的理解,在iOS中最应该关注的是脏内存,因为它可以确定如果存在低内存状况,应用程序在后台挂起时是否会被杀死。
https://stackoverflow.com/questions/13437365
复制相似问题