跳到主要内容

内存

实时内存分解(空闲/非活跃/活跃/固定),包含分配图表和历史记录。

概览

内存工具显示设备 RAM 的分配情况、可快速回收的内存量,以及分配情况随时间的变化。

该工具旨在回答以下实际问题:

  • "该设备当前是否存在内存压力?"
  • "内存是被系统(固定)、应用程序(活跃)还是缓存(非活跃)占用?"
  • "我的内存使用是否稳定,还是存在波动?"

在 Lirum Device Info 中,可用内存是 iOS 通常可以快速回收的内存量:空闲 + 非活跃

目录

标签页

  • 概览
  • 详情
  • 历史

概览标签页

概览标签页聚焦于可用内存

  • 显示可用百分比的环形仪表盘。
  • 可用内存量和总 RAM。
  • 简洁的分解表格:空闲非活跃活跃固定

当您需要快速了解"设备当前状态是否正常?"时,请使用此视图。 如果四行分解数据加起来不等于总量,请参阅压缩和"其他"

概览:可用内存仪表盘以及空闲/非活跃/活跃/固定分解。

详情标签页

详情标签页提供更完整的分解:

  • 内存分配图表(活跃/固定/非活跃/空闲)。
  • 详细内存信息表格,包含大小和百分比。
  • 可用行,合并显示空闲 + 非活跃

这是了解正在使用哪种类型的内存(以及是否可能被回收)的最佳位置。 如果空闲/非活跃/活跃/固定的百分比加起来不等于 100%,通常是因为部分内存当前被计入压缩或"其他"类别。

详情:分配图表以及包含大小和百分比的详细表格。

历史标签页

历史标签页帮助您了解趋势,而不仅仅是单个快照:

  • 内存分配历史:空闲/非活跃/活跃/固定的堆叠时间线。
  • 内存使用历史:随时间变化的整体使用情况简化视图。

在以下情况下使用历史标签页:

  • 您怀疑存在内存泄漏或失控的工作负载(使用量持续上升)。
  • 您想将卡顿/应用重新加载与内存压力关联起来(使用量飙升然后下降)。
  • 您想查看固定内存是否增长并保持高位(通常是系统/驱动程序压力)。
历史:查看内存分配和整体使用情况随时间的变化。

内存状态

Lirum Device Info 使用 iOS 报告的相同高级分类。这些是 iOS 内存最有用的"心理模型"类别:

类别通常含义iOS 能快速回收吗?
空闲未使用的 RAM,可随时分配是(已经空闲)
非活跃主要是缓存和最近未访问的页面通常可以
活跃当前正在使用的工作集不能直接回收
固定锁定的、不可分页的系统内存
压缩存储在内存压缩器中的页面不能直接回收
其他剩余类别(因操作系统/设备而异)视情况而定

可用(空闲 + 非活跃)

可用是一个实用的"我还有多少空间?"指标。

  • 空闲:已经未使用的页面。
  • 非活跃:主要是缓存页面,当其他应用需要内存时可以丢弃或重新分配。

这就是为什么 Lirum Device Info 在概览仪表盘和详情表格中显示可用 = 空闲 + 非活跃

注意:可用并不保证系统会立即无成本地提供该数量的内存。回收非活跃页面仍可能涉及工作(丢弃缓存、写回脏页面、稍后重建缓存数据)。

实际意义:

  • 如果可用很高且稳定,即使空闲很低,设备通常也有足够的余量。
  • 如果可用持续偏低(并且在执行正常任务时保持低位),iOS 可回收的缓存较少,可能会开始采取更强的压力措施(压缩、终止应用)。
  • 打开应用时短暂下降是正常的。缓慢稳定的下降且不恢复是常见的"压力"模式。

固定

固定内存是锁定(不可分页)的 RAM,无法按需压缩或回收。

可以将固定内存视为"必须常驻"的内存。它通常由内核和底层系统服务拥有,对于正确性或实时行为是必需的。

典型示例:

  • 内核内存和核心操作系统服务
  • 硬件驱动程序和 DMA 缓冲区
  • 图形/显示表面和部分 GPU 相关分配
  • 因实时性或正确性原因必须常驻的内存

重要性:

  • 固定内存是最不灵活的类别。如果它增长很大,iOS 释放 RAM 的选项就更少,因此内存压力会更快出现。
  • 设备可能显示低空闲内存但仍然正常,但持续高固定内存对 iOS 来说更难应对。

常见模式:

  • 固定内存可能在使用相机、AR、游戏、视频管道、大量 I/O 或使用外部配件时增加。
  • 固定内存往往是"粘性"的。某些固定分配不会快速缩减,有些只有在重启后才会重置。
  • 如果固定内存随时间稳定增长且不下降,可能表明系统级持续压力(或系统服务或驱动程序中的泄漏)。

活跃

活跃内存是应用和系统当前正在使用(频繁引用)的 RAM。

活跃不仅仅是"应用内存"。它包括操作系统当前认为热门的任何页面,包括文件支持的页面(例如代码和框架)和匿名页面(例如堆和栈)。

典型示例:

  • 应用堆和工作集
  • 正在使用的文件缓存和当前正在使用的解码媒体
  • 系统/应用正在频繁访问的数据结构

重要性:

  • 活跃内存不是"浪费的"内存;它是工作内存。它通常会跟踪您正在做的事情。
  • iOS 不能简单地"释放"活跃页面而不产生后果。在压力下,iOS 通常会先尝试从缓存回收;如果不够,可能会压缩内存,最终终止应用。

常见模式:

  • 活跃内存通常在您打开应用和工作时上升,当应用被终止或其页面随时间变为非活跃时可能下降。
  • 如果活跃内存在工作负载不变时持续攀升(或设备空闲时),这可能暗示应用中存在内存泄漏或失控的缓存。

非活跃

非活跃内存是最近使用过的 RAM,现在主要作为缓存保留。

非活跃是 iOS 获得大部分"快速回收"空间的地方。非活跃内存的大部分是干净的文件缓存,可以丢弃并在需要时稍后重建。

典型示例:

  • 缓存的文件页面
  • 最近使用的应用内存,可以重新分配
  • 未被频繁引用但保留着的数据,因为它可能再次变得有用

重要性:

  • 非活跃通常是 iOS 在新分配需要 RAM 时首先回收的地方。
  • 高非活跃通常是正常且良好的(缓存)。当系统需要内存时它应该下降。

常见模式:

  • 非活跃通常在应用启动、读取文件、滚动媒体或加载网页内容后增长(这些页面变成缓存)。
  • 在内存压力下,非活跃应该下降,因为 iOS 将缓存页面重新分配给新分配。
  • 如果非活跃已经很低且可用保持低位,iOS 可回收的"简单"内存较少,您可能会更快遇到压力。

空闲

空闲内存是当前未分配且可随时使用的 RAM。

在 iOS 上,空闲通常设计为偏低。操作系统会尽量将 RAM 用作缓存,以使您的下一次应用启动、滚动或文件读取更快。

重要性:

  • 即使在健康的设备上,iOS 上的空闲也往往很小,因为 iOS 更倾向于将 RAM 用作缓存(非活跃)而不是让它闲置。
  • 如果非活跃健康且设备没有压力,仅低空闲本身不是问题。

压缩和"其他"(为什么数字可能不相加)

在应用中,iOS 还会报告额外的内存类别,如压缩内存,以及其他不能完全归入四个主要页面列表的系统分配。

压缩内存是 iOS 通过以压缩形式存储页面来压缩的 RAM。这是 iOS 主要的压力缓解机制之一:

  • 压缩可以节省 RAM,但它仍然使用 RAM(以及压缩和解压缩的 CPU)。
  • 压缩占用量上升通常表明系统正在更努力地工作以避免终止应用。
  • 如果压缩页面被再次访问,iOS 必须解压缩它,这可能增加延迟并增加 CPU 使用率。

其他是四个主要类别中未表示的所有内容的剩余类别。它可以包括各种系统分配和 VM 核算类别,iOS 在不同操作系统版本和设备上的报告方式不同。

在 Lirum Device Info 中:

  • 概览分解和详情图表聚焦于四个最常解释的状态:空闲非活跃活跃固定
  • 显示的总量是您设备的物理 RAM。

因此,四行分解可能不会在每个设备和操作系统版本上精确等于总量。"缺失"的部分通常是当前被计入压缩的内存,加上其他系统分配(其他)。

iOS 在内存压力下的处理方式

当 RAM 紧张时,iOS 通常会分阶段施加压力:

  • 首先回收缓存:重新分配空闲页面,然后回收非活跃缓存(丢弃干净的文件缓存,清除部分缓存)。
  • 压缩内存:以压缩形式存储较少使用的页面,以延迟应用终止。
  • 终止应用:如果压力持续,iOS 可能会终止后台应用(最终是前台应用)以释放内存。这通常表现为切回应用时应用重新加载。

当您使用历史标签页观察这些阶段随时间发生时,内存工具最为有用。

如何解读数据

  • **可用(空闲 + 非活跃)**是最快的"喘息空间"指标。
  • 固定是最难处理的类别。如果固定增长,系统可调整的选项就更少。
  • 非活跃很大通常是正常且良好的(缓存)。当系统需要内存时它应该下降。
  • 如果活跃 + 固定增长而可用随时间缩减,您可能会看到应用重新加载、卡顿或系统压力。
  • 使用历史标签页来分析趋势。单个快照在 iOS 上容易误读,因为操作系统会积极使用 RAM 进行缓存。
  • 如果您在执行可重复操作时看到可用内存稳定下降,这比任何单个数字都更能表明存在问题。

注意事项与限制

  • iOS 自动管理内存;看到低空闲内存本身并不总是问题。
  • 值和类别因设备和操作系统而异,并在工具打开时持续更新。
  • 内存工具显示系统范围的内存状态(而非按应用归属)。
  • 在某些 iPad 型号和操作系统版本上,系统可能会使用存储作为交换空间。内存工具专注于物理 RAM,不尝试可视化交换空间使用情况。