“脏”和“居民”与虚拟记忆有什么关系?

时间:2011-03-03 02:41:00

标签: iphone objective-c xcode ios instruments

我退出了我大学的CS课程......那么,对计算机科学有充分了解的人可以告诉我:与虚拟记忆有关的Dirty and Resident是什么意思? 而且,对于奖励积分,无论如何,虚拟内存到底是什么?我正在使用Instruments中的Allocations / VM Tracker工具来分析iOS应用程序。

* 提示 - 尝试解释,好像你正在和一个8岁的孩子或一个完全愚蠢的人说话。 谢谢你们。

2 个答案:

答案 0 :(得分:44)

“脏内存”是以某种方式改变的内存 - 这是垃圾收集器必须查看的内存,然后决定如何处理它。根据您构建数据结构的方式,可能会导致垃圾收集器将大量内存标记为脏,使每个垃圾收集周期花费的时间超过了所需的时间。保持这个数字低意味着你的程序运行得更快,并且不太可能遇到明显的垃圾收集暂停。对大多数人来说,这不是一个真正的问题。

“常驻内存”是当前加载到RAM中的内存 - 实际使用的内存。虽然您的应用程序可能要求在内存中跟踪许多不同的项目,但可能只需要在任何时间点访问一小部分。保持这个数字较低意味着您的应用程序具有较低的加载时间,可以很好地与其他应用程序配合使用,并降低了内存耗尽和应用程序运行时崩溃的风险。这可能是你应该注意的数字,大部分时间都是。

“虚拟内存”是应用程序在任何时间点跟踪的数据总量。此数字与正在使用的数字不同(正在使用的内容标记为“Resident memory”) - 系统将保留跟踪但您的应用程序未在实际内存之外使用的数据。例如,它可能会将其保存到磁盘。

答案 1 :(得分:3)

WWDC 2013 - 410 Fixing Memory Issues很好地解释了这一点。非常值得一看,因为它还解释了脏,驻留和虚拟内存的一些实际意义。