as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

监控和记录内存

监控和记录内存

Memory Monitor是Vega Studio中的一个工具,可通过图形界面呈现应用的内存使用情况。此工具可以帮助您识别和解决内存问题,以免导致性能问题(崩溃、冻结或抖动)。使用Memory Monitor,您可以捕获应用内存状态的快照,然后在Recording View中对其进行分析。Recording View会标注高内存消耗区域,以便您通过解决效率低下问题来实现性能优化。

本页面介绍了如何使用Memory Monitor、如何记录应用内存明细以及如何使用Visual Studio (VS) Code命令面板分析记录的数据。

在VS Code中,使用Memory Monitor检查您的应用

  1. 在VS Code中打开命令面板。

    Mac: Shift + Command ⌘ + P

    Linux: 使用Ctrl + Shift + P

    在命令面板中输入Vega: Start Memory Monitor
    在命令面板中启动Memory Monitor
  2. 输入Vega: Start Memory Monitor,然后若是Mac则按return键,若是Linux则按回车键

    从App Performance Tools部分启动应用KPI可视化工具
    从App Performance Tools(应用性能工具)中选择Memory Monitor

    您也可以从App Performance Tools部分选择Memory Monitor

    您的屏幕即会显示Memory Monitor视图。如果看到空白屏幕,请关闭窗口并重新启动Memory Monitor。

  3. 在连接的设备上启动您的应用,然后启动Memory Monitor。

    您会看到一个进度条在新窗口中打开,然后Memory Monitor便会开始实时渲染图表。

    系统会显示Memory Monitor的实时渲染
    Memory Monitor的实时渲染

    该视图显示以下内存明细:

    • 按比例分配共享库占用的内存 (PSS)
    • 进程独自占用的物理内存 (USS)
    • JavaScript (JS) 堆(仅用于适用于Vega的React Native应用)

      PSS表示总体内存使用情况,而USS则表示专用内存使用情况。如果USS随着时间的推移而增加,可能表明存在内存泄漏问题。

使用CLI检查您的应用

使用VegaStudio应用性能CLI命令kepler exec perf memory-monitor

kepler exec perf memory-monitor
            --app-name=com.amazondeveloper.keplervideoapp.main
             --keplerscript-app如果适用
             --relative-gc-count如果适用

有关其他命令选项,请参阅Vega Studio应用性能CLI

内存组件

下表描述了PSSUSSSystem Available Memory以及JS Heap的内存子组件。

内存组件 内存子组件 描述
PSS   正在运行的进程所占用的内存,即其占用的专用内存加上与其他进程共享的内存份额。
  Swap PSS 换入压缩RAM (ZRAM) 的页面的原始大小,即压缩前按PSS衡量的大小。
  DRM 直接渲染管理器 (DRM) 分配的用于管理图形和显示操作(包括图形处理单元 (GPU) 和帧缓冲器)的内存部分。
  Native Heap PSS的原生堆部分表示使用系统分配器(如malloc)为进程分配的内存,专门用于小于内存映射访问协议(MMAP_THRESHOLD)的分配,而更大规模的分配则需要通过MMAP完成。
  Native Stack PSS的原生堆栈部分。
  Anonymous 当一个进程必须分配内存时,它会使用诸如malloc() 之类的函数来分配所需的内存量。对于超过MMAP_THRESHOLD的内存分配,该进程使用mmap() 系统调用来分配内存。MMAP分配会占用PSS内存的这一部分。
  Libraries 加载的共享库贡献的PSS
System Available Memory   当进程通过malloc() 或类似API提出内存分配请求时,操作系统可分配的总内存,其中还包括操作系统可以从现有进程/应用中回收的内存。
  USS 应用使用的RAM的专用部分。如果USS随着时间的推移而持续增加,通常表示存在内存泄漏问题。使用其他监控指标进行精准可靠的泄漏检测。
  Swap USS 换入ZRAM的内存页面的原始未压缩大小。无论页面经过压缩后占用的存储空间如何,均按USS衡量。
JavaScript Heap   Hermes JS引擎为了处理JavaScript对象和运行时数据所占用的内存。
  Allocated Bytes 显示Hermes堆上为JavaScript对象和值分配的总内存,表示您JS代码的实际内存使用情况。
  External Bytes 由Hermes Garbage Collector (GC) 管理的外部资源占用的内存。
  Number of GC Events Hermes GC执行的垃圾回收周期的数量。
  GC CPU Total Duration 垃圾回收所占用的总CPU时间(以毫秒为单位)。
  GC CPU Duration % 垃圾回收所占用的CPU时间百分比,反映内存管理开销。
  GC Max Pause Time 自应用启动以来最长的GC暂停(以毫秒为单位),表示内存清理操作造成的最大延迟。

记录您的应用内存明细

您可以捕获要分析的特定时间段的数据。

  1. 在Memory Monitor中,选择⏺️ Start Recording(开始记录)。
  2. 出现提示时,输入记录会话的名称。
  3. 出现提示时输入记录超时时间。默认情况下,记录超时时间为120秒。
  4. 在您的Fire TV Stick上,在release(发布)模式下运行您的应用。
  5. 选择⏹️ Stop Recording(停止记录)以结束会话。

    Recording View将在单独的窗口中打开。

分析您记录的数据

Recording View可帮助您详细分析记录的性能数据。当您打开Recording View时,系统会显示多项明细和可视化结果:

  • 时间线
  • PSS
  • USS
  • 跟踪
  • JS Heap
  • GC摘要
Recording View显示多项明细和可视化结果
通过Recording View,您可以分析自己的录制数据。

您必须密切监控GC活动,原因如下:

  • 频繁的GC运行表明您的应用将过多的时间用于内存管理,而不是专注于核心任务。这种过度的内存管理会影响应用的性能,使其运行速度变慢,并且对用户交互的响应速度也会变慢。

  • 在Stop-the-World (STW) 事件期间,GC会暂时冻结您的应用以释放内存。由于应用在GC运行期间会完全停止处理用户输入或停止更新界面,因而暂停会对应用的响应能力造成明显的干扰。

打开之前的记录会话

使用以下方法之一:

选项1(首选): 使用快速打开 此方法可通过VS Code的界面或CLI访问您的记录。

在VS Code中:

  1. 查找Memory Monitor记录文件(示例: Basic-memory-recorder[时间戳].json),该操作使用的是VS Code快速打开,或在项目generated目录中进行。
  2. 单击文件一次进行预览,或单击两次以活动模式打开。

在CLI中:

  1. 打开终端窗口并输入:

    code <<记录文件路径>>
    

如果您的终端无法识别Code命令:

  1. 打开VS Code。
  2. 打开命令面板:

    • Mac: Cmd+Shift+P
    • Linux: Ctrl+Shift+P
  3. 运行“Shell Command: Install code command in PATH”。
  4. 重试该命令。

选项2: 使用VS Code命令面板 此方法可让您使用VS Code的内置命令界面或在快速打开不可用时访问您的记录。

  1. 打开VS Code。
  2. 打开命令面板:

    • Mac: Cmd+Shift+P
    • Linux: Ctrl+Shift+P
  3. 输入Vega: Open Recording View
  4. 从列表中选择之前的记录会话。

    会话的Recording View在新窗口中打开。如果您在另一个选项卡中有进行中的会话,则焦点会转移到新会话。


Last updated: 2025年10月1日