OS X 中的有线内存与活动内存

ton*_*sid 14 memory osx-snow-leopard memory-management

我无法理解 OS X 中有线内存和活动内存之间的区别。

不要谈论四种类型的内存(不要谈论空闲或非活动内存,因为我已经知道它们是什么)。只需比较和对比有线内存与活动内存,我就可以更好地理解这两者。

bub*_*ubu 34

温馨提醒:为了给社区其他人提供更好的答案,请不要说“不要谈论四种类型的记忆”之类的话。即使你很清楚,也可能有一千零一个互联网公民来到这里希望得到一个附带的答案。:)

“分页”是以下操作的准确术语。“交换”通俗地用于“分页”,但如今可以互换使用。“交换”最初是指将程序的内存空间完全移动到“二级存储”(相对于“主存储”,这是一个古老的术语……RAM,在某种程度上)。分页和交换之间的界限被称为分页空间交换的 Windows 和 Unix 系统相当模糊。

然后,必须了解分页才能理解活动、有线和非活动内存的概念。分页意味着将内存页移出随机存取存储器(即 RAM)并移到硬盘或其他辅助存储设备上。这允许正在运行的应用程序请求比可用系统 RAM 总量更多的内存。

请注意,虽然分页意味着再次访问该特定信息会带来巨大的性能损失,但分页可能会发生在两种不同的情况下:(引用我自己的话:没有交换分区的缺点

  1. 当所有应用程序没有足够的内存时——在没有交换空间的系统上发生这种情况的情况下,它将导致无法为请求新内存页的新应用程序分配内存——这通常会导致程序终止。
  2. 当一些内存页(内存被划分为“页”)前一段时间被使用,但现在不再使用时,它将被转移到交换文件中,剩余的内存可以用来做其他可能更多的事情有用(例如,甚至缓存!)——当这种情况发生在没有交换空间的系统中时,这将导致空闲页面留在内存中。不过这也不算太严重,因为现在我们有相当多的内存。

四种类型的内存分类如下:

  • Wired:由一个应用程序使用,该应用程序声称分配的内存块必须物理保留在 RAM 中,并且不会交换到磁盘上,无论它最近是否使用过,即,另一个应用程序可能不会请求该特定内存块。示例是系统使用的内存的一部分,以及虚拟机使用的内存。

  • 活动和非活动:这些是通常由用户模式应用程序使用的内存,它们可以在其中交换到磁盘上。“Active”表示最近使用过,“Inactive”表示最近没有使用过。因此,操作系统会先换出非活动页面,然后在必要时再换出活动页面。

  • 空闲内存:未使用的内存。这用于其他目的,例如缓存硬盘。

如果您的问题是“在内存不足的可怕情况下,系统会以什么顺序尝试为新应用程序分配内存?”,那么顺序将是分配

空闲内存 → 非活动内存 → 活动内存

从某种意义上说,即使是最近使用的内存也可以分页。“有线”部分是不会不惜一切代价调出的部分。

然而,在现代系统中,由于我们有足够的 RAM 可用,活动内存不太可能被调出。

  • 很棒的答案!+1 (2认同)