首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS的驻留和脏内存是什么?

iOS的驻留和脏内存是什么?
EN

Stack Overflow用户
提问于 2012-11-18 04:02:28
回答 2查看 11.4K关注 0票数 9

有人能告诉我,什么样的记忆是肮脏的/常驻的,它们是从哪里来的?驻留内存是否意味着与Mac的“有线内存”相同?

这就是我看到的关于Mac内存的内容:

连线:这指的是内核代码等等。不应该从RAM中移出的内存。也被称为常驻记忆。 共享:在两个或多个进程之间共享的内存。这两个进程都会显示出这么多的内存,因此对于实际使用的内存数量可能有一点误导。 Real :这是task_info()报告的应用程序的“真实”内存使用情况--对当前进程的物理页面数量的粗略统计。(RSIZE) 私有:这是进程单独使用的内存,在驻留内存中使用。(RPRVT) 虚拟:进程中映射到任何东西的地址空间总量--无论这是一个任意大的变量空间还是任何东西--它并不等同于实际的VM使用。(VSIZE) Active :当前标记为active的内存,并使用RAM。 非活动:“非活动内存不再被使用,并已被缓存到磁盘上。它将保留在RAM中,直到另一个应用程序需要空间。如果您(或您的计算机的一个客户端)稍后再来访问,则将这些信息留在RAM中对您有好处。”- Mac。 免费:在没有任何数据的情况下,RAM的实际可用量。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-08 04:05:30

快一年了,我想出来了。

干净内存

干净内存是可以重新创建的内存,在iOS上它是以下内存:

  • 系统框架
  • 应用程序的二进制可执行文件
  • 内存映射文件

还请注意这种情况:当应用程序链接到框架时,干净的内存将随着框架二进制文件的大小而增加。但在大多数情况下,只有一部分二进制文件真正加载在物理内存中。

脏内存

所有内存不干净的内存都是脏内存,脏内存不能由系统重新创建。

当有内存压力时,系统将卸载一些干净的内存,当再次需要内存时,系统将重新创建它们。

但是对于脏内存,系统不能卸载它们,而且iOS没有交换机制,所以脏内存总是保存在物理内存中,直到达到一定的极限,然后你的应用程序就会被终止,所有内存都会被系统回收。

虚拟内存

代码语言:javascript
复制
virtual memory = clean memory + dirty memory.

这意味着虚拟内存是你的应用程序想要的所有内存。

驻留存储器

代码语言:javascript
复制
resident memory = dirty memory + clean memory that loaded in physical memory

驻留内存是真正加载在物理内存中的内存,它意味着所有脏内存和干净内存的一部分。

结论

在任何时候,这都是正确的:

代码语言:javascript
复制
virtual memory == (clean memory + dirty memory) > resident memory > dirty memory

如果您担心应用程序占用的物理内存(这是您的应用程序由于内存不足而终止的关键原因),您应该主要关注驻留内存。

票数 40
EN

Stack Overflow用户

发布于 2012-11-18 06:20:21

驻留内存是分配给应用程序的内存。脏内存是由于iOS中缺少分页系统而不能自动释放的驻留内存。我在http://liam.flookes.com/wp/2012/05/03/finding-ios-memory/找到了这个信息。然后,对于您列出的内存类型,iOS中的驻留内存更接近真实或私有内存。根据我的理解,在iOS中最应该关注的是脏内存,因为它可以确定如果存在低内存状况,应用程序在后台挂起时是否会被杀死。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13437365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档