Mac OS 内存管理知识

2、探索操作系统内核:从基础到实践 本文介绍了操作系统内核的基础概念及其核心功能,重点探讨了Mac OS X和iOS使用的XNU内核结构。内容涵盖内核扩展(KEXTs)、I/O套件框架、内存管理、同步与线程处理等关键技术点,详细解析了内核空间与用户空间的区别以及开发内核驱动程序的关键步骤,适合对操作系统底层开发感兴趣的开发者和学习者。 阅读详情

原文链接:http://elf8848.iteye.com/blog/1373854



先请看下面三张图片,是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,导致时间一长系统可用[内存]越来越少。因此常常需要重新启动。



UDS 诊断 - CommunicationControl(通信控制)(0x28)服务 诊断 字节参数名称字节值#1CommunicationControl(通信控制)请求SID0x28#2#3communicationType(通信类型)#4nodeIdentificationNumer(节点标识符)(高位字节)controlType 为 0x04 或 0x05 时,使用该参数#5nodeIdentificationNumer(节点标识符)(低位字节)controlType 为 0x04 或 0x05 时,使用该参数。 阅读详情

相关推荐

eDP/DP接口简介

目前,在视频传输协议以及接口领域,外部接口主要是DP与HDMI两分天下,当然之前出现过很多接口-VGA, DVI等等,最新平台基本以这两个为主;笔记本内部接口就基本上使用eDP((Embedded Display Port))作为标准接口来驱动液晶屏了。那么问题来了,eDP和DP,是完全兼容的么?eDP,DP,HDMI,这三种接口的显示器,可以插在同一个接口上使用么?这篇文章,就会从硬件和一部分协议的角度分析一下这三大协议。

weixin_50518899的博客 2万+

教你看Mavericks活动监视器里的内存

10.9后这个界面有点变化,出现了一个“已压缩”项目。为让更多人了解这是怎么一回事,这里不用太多术语,某些词汇转用中文表达。 物理内存:这个不需要解释了吧 已使用内存:这个值就是当前物理内存已经被使用的总量,为右边四项(用用程序内存,文件缓存,联动内存,已压缩)的总和。 虚拟内存:为Mach(不是Mac哦)的虚拟储存器管理系统所管理的虚拟内存总量,这个值是 物理内存和被转移到

j9y6f315的专栏 1485

JW01二氧化碳传感器实战:5分钟搞定Arduino环境监测系统(附完整代码)

本文详细介绍了如何使用JW01二氧化碳传感器与Arduino快速搭建环境监测系统。通过简单的硬件连接和完整的代码示例,读者可以在5分钟内实现CO2浓度实时监测,并了解数据解析、常见问题解决及进阶应用扩展。JW01传感器的高精度和易用性使其成为创客和嵌入式开发者的理想选择。

kite3的博客 382

如何在“活动监视器”中检查Mac是否需要更多内存?

“内存”面板显示了 Mac 使用的内存数量、内存在内存和启动磁盘间交换的频率、App 占用的内存数量以及内存中已压缩的内存量。 当您有可用或未使用的内存时,您的电脑性能不一定会提高。macOS 通过对电脑的所有内存进行有效使用和管理来获得最佳性能。那我们如何在“活动监视器”中检查Mac是否需要更多内存呢?需要的朋友快来看看吧! 具体方法如下 1.打开"启动台"。 2.然后进入到"其他文件夹"。 3.找到"活动监视器"并单击打开。 4.点按“内存”弹出式菜单。“内存压力”图形可让您了解电脑是否在有效使用

macxingchendahai的博客 1631

【赛题解析&命令脚本配置】2024年第十七届山东省技能大赛 | 网络系统管理”赛项-模块B:Linux服务部署 & ⑤客户端OutsideCli和InsideCli工作任务

【赛题解析&命令脚本配置】2024年第十七届山东省技能大赛 | 网络系统管理”赛项-模块B:Linux服务部署 & ⑤客户端OutsideCli和InsideCli工作任务 | 【赛题解析&命令脚本配置】2024年第十七届山东省技能大赛 | 网络系统管理”赛项-模块B:Linux服务部署 & ⑤客户端OutsideCli和InsideCli工作任务

君逍遥o 318

DO-178C详解:机载软件开发、验证与适航标准指南

DO-178C将软件划分为五个等级(A到E),这些等级是基于失效状态对航空器安全的影响而定。

qq_41854911的博客 2848

Mac OS X / IOS 内存管理机制简要说明(转载)

转载地址: http://www.360doc.com/content/15/0121/09/10135992_442481321.shtml 首先,我们要来了解一下,Mac OS X的内存四种状态,打开你的“应用程序-实用工具-系统监视器”程序,切换到“系统内存”标签,你会看到你的内存有联动、活跃、非活跃和可用空间四种状态: 见下图: 联动是系统核心占用的,永远不会从系统物理[内存]种清除, 活跃表示这些[内存]数据正在使用种,或者刚被使用过, 非活跃表示这些[内存]中的数据是有效的,但是最近没有被使

花火酱的抱枕 4449

反应动力学仿真软件:CHEMKIN_(12).CHEMKIN与其他软件的接口

通过上述介绍,我们详细探讨了如何将 CHEMKIN 与 MATLAB、Python、COMSOL、Aspen Plus 和 Ansys Fluent 等软件工具进行接口配置和数据交互。这些接口不仅能够显著提升 CHEMKIN 在反应动力学仿真中的应用效果,还能充分利用其他软件工具的强大功能,实现更复杂的数据处理和分析。希望这些内容对您在化学反应动力学仿真中的工作有所帮助。

kkchenjj的博客 1138

看懂mac OS X的内存状态

可用空间(Free):  当前空闲的物理内存 联动(Wired):又称Resident, 这些一般指内核,内核扩展和驱动占用的物理内存 ,这些内存是常驻内存,不能够被page in / page out 活跃(Active):激活状态的内存,也就是应用程序等目前占用的内存 非活跃(Inactive):非活动内存,指被应用程序占用但是当前未在使用状态的内 存。它

享受开发,颠倒银河 9117

最新Codex接入DeepSeek官方API教程(无需cc-switch)

最新Codex接入DeepSeek官方API教程(无需cc-switch)

猿小白的博客 942

【72】【OpenCV C++ & C#】 将cv::Mat 图像转换成imgINFO 传给c#在winform上显示,OpenCV C++如何将处理后的图像传给C#呢? 如何获取图像信息呢?

本文介绍了通过OpenCV C++处理图像后传递给C#的方法。首先定义了一个结构体imgINFO存储图像信息(数据指针、宽高、通道数等),然后通过getImgInfo函数将cv::Mat转换为该结构体。文章特别指出当图像宽度不能被4整除时可能出现失真问题,并给出了两种解决方案:调整输入图像或创建新的对齐图像。此外还解释了img.step和img.cols*img.elemSize()的关系,说明它们在大多数情况下是相等的。最后提到需要通过DLL将结构体传递给C#(具体方法参见其他文章)。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 697

OS X与iOS内核编程

《OSX与iOS内核编程》 基本信息 原书名:OSXandiOSkernelprogramming 作者:(澳)哈尔沃森(Halvorsen,O.H.)(澳)克拉克(Clarke,D.) 译者...

csdn1232的博客 177

【AI大模型:认知升级】1、全面解析AI大模型:从起源到发展脉络与应用价值

AI大模型是具备超大规模参数(千亿至万亿级)、海量训练数据(TB级)和强迁移学习能力的基础模型。其技术特征包括Transformer架构革新、大数据预训练范式及参数规模超过临界值后的能力涌现。发展历程经历了语言模型突破(2018-2020)、多模态融合(2021-2023)和架构创新(2023至今)三波浪潮,遵循数据、算力、算法协同进化规律。底层驱动因素包括能力涌现机制、算力基础设施突破和应用场景拓展,正在重构产业价值链。通过"知识星系""认知

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 2292

11纯代码 oc xcode_xcode+OC基础学习

首先配置MAC OS 系统 装机也好 虚拟机也好本人是WIN7下 虚拟机VM 上安装 MAC OS 10.92 +xcode5OC 基础:oc是苹果的OS X 和 IOS 及其相关API,Cocoa 和 Cocoa Touch的主要编程语言Cocoa 是 苹果的面向对象开发框架,用来生成Mac OS X 的应用程序。主要的开发语言为 Objective-c1 NSLog(@"字符...

weixin_31146939的博客 1336

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Objective-C入门 简介Cocoa框架

Cocoa Framework简称Cocoa,它是Mac OS X上的快速应用程序开发(RAD, Rapid Application Development)框架,一个高度面向对象的(Object Oriented)开发框架。无论您是资深的Mac开发人员,还是即将踏入Mac开发世界的新新人类,Cocoa都是您开发应用程序的瑞士军刀、乐高积木,它是您构建Mac OS X应用程序最强大、最高效的工具。

不积跬步无以至千里,千里之行始于足下! 1308

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Introduction to The Objective-C 2.0 Programming Language

 Introduction to The Objective-C 2.0 Programming LanguageContents:Who Should Read This Document Organization of This Document Conventions See Also  The Objective-C language is a simple compu

发芽的石头 1515

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

苹果开发技术: Cocoa 框架概述

From: http://www.cocoachina.com/newbie/basic/2009/0611/130.html     消息退出wjdyhq ...

移动开发 114

OC小结--转

objective-c基础教程——学习小结 提纲: 简介 与C语言相比要注意的地方 objective-c高级特性 开发工具介绍(cocoa工具包的功能,框架,源文件组织;XCode使用介绍) 简介: 1.objective-c是C语言的一个扩展集,主要由APPLE公司维护,是MAC系统下的主要开发语言。 个人认为,对于用惯了常用的C,JAV...

dingduozi4062的博客 170

objective-c基础教程——学习小结

objective-c基础教程——学习小结 提纲: 简介 与C语言相比要注意的地方 objective-c高级特性 开发工具介绍(cocoa工具包的功能,框架,源文件组织;XCode使用介绍) 简介: 1.objective-c是C语言的一个扩展集,主要由APPLE公司维护,是MAC系统下的主要开发语言。 个人认为,对于用惯了常用...

weixin_33682719的博客 76

MAC OS 关于内存使用状态的问题

关于内存使用状态的问题 大家总是觉得苹果标注为可用的内存往往一下子就用完了,很紧张,觉得是不是内存不够用。其实这是大家对Unix系统的内存管理方式不清楚,思维停留在Windows系统下。 简单的说,Mac OS X的内存使用情况分为 联动,活跃,非活

无限互联@彪哥 6516
上一篇: Unix常见的信号以及信号定义
下一篇: 非开发人员获取ios crashlog方法
NewJerryj
博客等级 码龄19年 196粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值