步骤1:确定崩溃原因
- 打开汇总崩溃报告 在设备上下载并打开汇总崩溃报告 (ACR) 文件。
-
在ACR文件中查找
CrashReason:SIGSEGV。 -
要确认JavaScript堆内存溢出情况,请查看
HermesGC OOM的应用日志。
步骤2:识别内存泄漏场景
- 打开Visual Studio (VS) Code。
-
启动Memory Monitor。
- 按照检查您的应用内存消耗中的步骤进行操作。
- 按照200MB阈值方法跟踪JavaScript堆图。
- 记录会话以捕捉崩溃场景。
- 按照记录您的应用内存明细中的步骤操作。
步骤3:捕获JavaScript堆快照
- 将Chrome DevTools附加到适用于Vega的React Native应用。按照启动Chrome DevTools中的步骤操作。
- 导航到Memory(内存)选项卡并选择Heap Snapshot(堆快照)。
- 单击Take snapshot(拍摄快照)。
- 要将快照下载到您的主机上,请单击向下箭头。
步骤4:分析JavaScript堆快照
使用Memlab或Chrome DevTools分析JavaScript堆快照。 使用Memlab进行分析-
安装Memlab:
-
运行分析:
Memlab会比较三张堆快照:
- 基准 - 初始状态
- 目标 - 可能泄漏后的状态
- 最终 - 清理后的状态
--trace-all-objects参数会将所有目标页面对象标记为可能存在泄漏问题。memlab find-leaks会比较三张堆快照,并以表格格式提供摘要:
- 查找表格中未清除的对象。
- 检查用于解除分配持久对象的代码。
- 查看retainer traces(仅提供英文版)。 Memlab根据保留的大小对泄露的对象进行排名。使用保留器跟踪找到对象树中泄露的对象。
详细了解Memblab:
使用Chrome DevTools进行分析
- 打开Chrome DevTools并转到Memory选项卡。
- 上传您的JavaScript堆快照。
- 使用不同的视图分析JavaScript堆快照:
- 按Shallow Size(浅层大小)排序以查找最大的对象
- 按Retained Size(保留大小)排序以识别影响最大的对象

