as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
Ring
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持
跳转到主要内容
JavaScript内存异常会导致应用崩溃和用户体验不佳。超过JavaScript堆限制(TV配置文件为200MB)会触发Hermes垃圾回收器 (HermesGC) 内存不足错误。常见的触发因素包括内存泄漏、数据结构过大和资源清理效率低下。 本页面介绍了识别、分析和解决内存问题的步骤。

步骤1:确定崩溃原因

  1. 打开汇总崩溃报告 在设备上下载并打开汇总崩溃报告 (ACR) 文件。
  2. 在ACR文件中查找CrashReason:SIGSEGV。
  3. 确认JavaScript堆溢出 要确认JavaScript堆内存溢出情况,请查看HermesGC OOM的应用日志。
示例ACR:
示例日志:
包含HermesGC OOM日志错误的SIGSEGV表示,JavaScript在运行时出现堆内存问题。

步骤2:识别内存泄漏场景

  1. 打开Visual Studio (VS) Code。
  2. 启动Memory Monitor。 按照检查您的应用内存消耗中的步骤进行操作。
  3. 按照200MB阈值方法跟踪JavaScript堆图。 屏幕截图,示出了JavaScript堆内存即将达到200MB的临界限制。
  4. 记录会话以捕捉崩溃场景。 按照记录您的应用内存明细中的步骤操作。

步骤3:捕获JavaScript堆快照

  1. 附加Chrome DevTools 将Chrome DevTools附加到适用于Vega的React Native应用。按照启动Chrome DevTools中的步骤操作。 屏幕截图,示出了Chrome DevTools连接到Vega应用进行内存分析的情况。
  2. 导航到Memory(内存)选项卡并选择Heap Snapshot(堆快照)。 屏幕截图,示出了用于捕获堆快照的Chrome DevTools的Memory选项卡。
  3. 单击Take snapshot(拍摄快照)。 下图是堆快照的示例。 屏幕截图,示出了捕获的堆快照,其中有下载选项可用。
  4. 要将快照下载到您的主机上,请单击向下箭头。

步骤4:分析JavaScript堆快照

使用Memlab或Chrome DevTools分析JavaScript堆快照。

使用Memlab进行分析

  1. 安装Memlab:
  2. 运行分析:
    Memlab会比较三张堆快照:
    • 基准 - 初始状态
    • 目标 - 可能泄漏后的状态
    • 最终 - 清理后的状态
    --trace-all-objects参数会将所有目标页面对象标记为可能存在泄漏问题。 memlab find-leaks会比较三张堆快照,并以表格格式提供摘要: 屏幕截图,示出了Memlab分析表,在其中比较堆快照,确定是否存在内存泄漏。
  3. 查找表格中未清除的对象。
  4. 检查用于解除分配持久对象的代码。
  5. 查看retainer traces(仅提供英文版)。 Memlab根据保留的大小对泄露的对象进行排名。使用保留器跟踪找到对象树中泄露的对象。 屏幕截图,示出了Memlab保留器轨迹,这些轨迹显示了内存泄漏对象路径。
详细了解MemLab:

使用Chrome DevTools进行分析

  1. 打开Chrome DevTools并转到Memory选项卡。
  2. 上传您的JavaScript堆快照。
  3. 使用不同的视图分析JavaScript堆快照: 屏幕截图,示出了带有多个视图选项的Chrome DevTools堆快照分析。
    • 按Shallow Size(浅层大小)排序以查找最大的对象
    • 按Retained Size(保留大小)排序以识别影响最大的对象
为各种分析视角选择不同的视图(摘要、比较、包含、统计)。 了解快照分析:

相关主题


最后修改于 2026年10月26日