`

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,导致时间一长系统可用[内存]越来越少。因此常常需要重新启动。

 

 

 

 

 

 

  • 大小: 31 KB
  • 大小: 30.4 KB
  • 大小: 26.8 KB
分享到:
评论
1 楼 huangzongwu 2013-03-26  
现在的情况是mac常常需要重新启动,因为程序关闭后内存没有被释放,8G内存很快用完,根本不会出现所谓的"当free的[内存]低于某个值(这个值是由你的物理[内存]大小决定 的),系统则会按照以下顺序使用inactive的资源",而是直接使用交换内存,有一次直接到了42G,吓死我了,而windows我用过xp和win7win8还重来不会出现这种情况

相关推荐

    Java项目:宠物医院管理系统(java+SSM+JQUERY+Layui+JS+Mysql)

    主要功能有:个人中心、用户管理、医生管理、医学知识管理、科室信息管理、医生信息管理、预约挂号管理、医嘱信息管理、药品信息管理、订单信息管理、留言板管理、系统管理等功能 用户:用户进入系统可以个人中心、...

    Java项目:汽车保险理赔管理系统(java+SSM+JSP+bootstrap+jquery+Mysql)

    项目介绍 本项目包含管理员、财务、用户、审核人员、外派人员等多种角色; 管理员角色包含以下功能: 管理员登陆,用户管理,理赔知识管理,理赔账单管理等功能。 ...或者 Mac OS; 5.数据库:MySq

    Java项目:流浪猫狗救助管理系统(java+SSM+JSP+bootstrap+jQuery+mysql)

    或者 Mac OS; 5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 6.数据库:MySql 8.0版本; 技术栈 1. 后端:Spring SpringMVC MyBatis 2. 前端:JSP+bootstrap+...

    破解Objective-C面试:笑到最后的技术攻略!.zip

    技术关键词:Objective-C、iOS开发、Mac OS X、编程语言、面向对象编程、内存管理、自动引用计数(ARC)、协议(protocol)、类扩展(category)、键值观察(KVO)、键值编码(KVC)、Block、Delegate模式、多态性、...

    Objective-C基础教程(第2版)

    C的基础知识和面向对象编程的重要概念,结合实例介绍了Cocoa工具包的优秀特性及框架,以及继承、复合、对象初始化、类别、协议、内存管理和源文件组织等重要编程技术,教你如何针对iOS或OS X用户界面编写出优秀的...

    Objective-C基础教程+随书源代码

     本书全面而系统地讲述Objective-C语言的基础知识和面向对象编程的重要概念,结合实例介绍了Cocoa工具包的优秀特性和其中的框架,以及继承、复合、源文件组织、内存管理、对象初始化和类别创建等众多重要的面向对象...

    Objective-C基础教程

     本书全面而系统地讲述 Objective-C 语言的基础知识和面向对象编程的重要概念,结合实例介绍了 Cocoa 工具包的优秀特性和其中的框架,以及继承、复合、源文件组织、内存管理、对象初始化和类别创建等众多重要的面向...

    iPhone开发基础教程

    本书全面而系统地讲述Objective-C语言的基础知识和面向对象编程的重要概念,结合实例介绍了Cocoa工具包的优秀特性和其中的框架,以及继承、复合、源文件组织、内存管理、对象初始化和类别创建等众多重要的面向对象...

    大一大学计算机基础课程知识点.doc

    系统软件〔必备〕:操作系统〔Windows系列、DOS、Mac OS、UNIX、Linux、OS/2〕、数据库系统、语言处理程序〔C/VB/Java〕、诊断程序; 操作系统:是最基本的系统软件,是管理和控制计算机中所有软、硬件资源的一组...

    Objective-C基础教程随书源码

    《Objective-C基础教程》全面而系统地讲述Objective-C语言的基础知识和面向对象编程的重要概念,结合实例介绍了Cocoa工具包的优秀特性和其中的框架,以及继承、复合、源文件组织、内存管理、对象初始化和类别创建等...

    计算机应用基础第三章《计算机的组成》.pptx

    操作系统种类—PC PC电脑操作系统 Unix和类Unix操作系统 MACOS(Mac OS X、OS X) 它们大量用于商业服务器,以及学术和工程环境中的工作站 Linux操作系统 Apple Inc.开发,1984年以来一直是苹果的主要操作系统 1991...

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版

    1.2 Apple Mac OS X 14 1.2.1 在Mac平台上安装Xcode 14 1.2.2 验证Mac平台的Java开发包 15 1.2.3 验证Mac平台上的Apache ANT 15 1.2.4 验证GNU Make 16 1.2.5 在Mac平台上下载并安装Android SDK 16 1.2.6 在...

Global site tag (gtag.js) - Google Analytics