Mac OS 内存管理知识

先请看下面三张图片,是MAC OS系统的“活动监视器”的截图,分别是8G,4G,2G内存。

使用Mac OS系统时,关注内存的使用情况有时是必要的。

常常使用Windows系统的朋友,可能觉得Mac OS系统一启动好像就一下子把内存全用光了,很紧张。

其实是对Mac OS(或Linux)系统的内存管理方式不理解造成的,还在使用Windows系统的思维来看待这个问题。




下面我们来了解一下Mac OS的“活动监视器”的“系统内存”标签:

“系统内存”标签的饼图中显示的内存类型共有四种:wired(联动内存), activez(活跃内存), inactive(非活跃内存),free(可用内存)四种。

四块饼图的总和等于安装在电脑上的内存(RAM)总量。


wired(联动内存):

是系统核心占用的,此内存中的信息无法移动到硬盘,因此必须保留在 RAM 中。联动内存的大小取决于当前使用的应用程序。


activez(活跃内存):

表示这些内存数据正在使用当中,或者刚刚被使用过。


inactive(非活跃内存):

表示这些内存中的数据是有效的,现在没有被使用,但最近曾经被使用过。

例如,如果您使用 Mail 然后退出,则 Mail 曾经使用的 RAM 会标记为“非活跃”内存。此类“非活跃”内存可供其他应用程序使用,就像“可用”内存一样。

但是,如果在其他应用程序占用此“非活跃”内存之前打开 Mail,则可以更快打开 Mail,因为其“非活跃”内存会转换为“活跃”内存,而不是从较慢的硬盘加载 Mail。

free(可用内存):

指当前未使用的内存,这些空间可以随时被程序使用。


虚拟内存大小:

这是指您的 Mac 上所有进程的虚拟内存总量。 


入页面(Page outs) /  出页面(Page outs):

这是指在 RAM 和硬盘之间移动的信息量。此数值是 Mac OS X 在 RAM 和磁盘空间之间移动的累计数据量。

提示:当 Mac 必须将 RAM 中的信息写入硬盘驱动器(因为 RAM 已满)时,即会产生出页面。添加更多 RAM 可减少出页面。

 

已使用的交换:

这是指拷贝到硬盘驱动器上交换文件中的信息量。



Mac OS(或Linux)系统的内存管理方式:

Mac OS的内存管理非常高效。它会根据需要自动分配内存并调整内存的内容。

当free的[内存]低于某个值(这个值是由你的物理[内存]大小决定 的),系统则会按照以下顺序使用inactive的资源。

首先如果inactive的数据最近被调用了,系统会把它们的状态改变成active,并接在原有active[内存]逻辑地址的后面, 

如果inactive的[内存]数据最近没有被使用过,但是曾经被更改过而还没有在硬盘的相应虚拟[内存]中做修改,

系统会对相应硬盘的虚拟[内存]做修改,并把这部分物理[内存]释放为free供程序使用。

如果inactive[内存]中得数据被在映射到硬盘后再没有被更改过,则直接释放成free。

最后如果active的[内存]一段时间没有被使用,会被暂时改变状态为inactive。



有了以上知识后,就可以对内存的使用情况做出自己的分析了。

当前可用的内存总量 = free(可用内存) + inactive(非活跃内存) 

如果你的系统里有少量的free memeory和大量的inactive的memeory,说明你的内存是够用的,系统运行在最佳状态,只要有需要系统就会使用它们。

反之,如果系统的free(可用内存)和inactive(非活跃内存)都很少,而activez(活跃内存)很多,说明你的内存不够用了,快加内存吧。

当然一开机,大部分内存都是free(可用内存),这时系统反而不在最佳状态,因为很多数据都需要从硬盘调取,速度反而慢了。


同时关注“出页面(Page outs)”也是有必要的,前面有一句话已经提到了产生“出页面”的原因。

出页面 很多可导致性能不好,一般free(可用内存)和inactive(非活跃内存)都很少时,同时也会产生大量的“出页面”。

可以从本文配套的三张图片看出来。



注:

windows为了兼容古老和不规范的程序,允许程序直接控制硬件,导致windows系统的权力不够大,而许多windows程序也不规范,

因此在退出进程后往往许多[内存]没有还给系统变成了invisible memory,导致时间一长系统可用[内存]越来越少。因此常常需要重新启动。

猜你喜欢

转载自elf8848.iteye.com/blog/1373854