在设备连接完成后,可按照如下方法查看内存分析结果:

指定要录制的泳道,或在会话区选择Open File,导入历史数据。
可启动内存回收机制。
展开Memory泳道,子泳道展示的是按照内存类型将进程PSS值拆分开的各个维度的内存信息,包含ArkTS Heap、Native Heap、GL、Graph、Guard、AnonPage Other、FilePage Other、Dev、Stack、ArkWeb PA、JS Heap、.hap、.so、.ttf。默认展示其中的五个子泳道,可以点击主泳道的options标签并勾选其他子泳道查看其他子泳道。

子泳道 | 说明 |
|---|---|
ArkTS Heap | ArkTS堆的内存占用。 |
Native Heap | Native层(主要是应用依赖的so库的C/C++代码)使用new/malloc分配的堆内存。 |
GL | 包括应用和RS,应用为纹理内存,RS为纹理和图形渲染内存。 |
Graph | 该进程按去重规则统计的dma内存占用,包括直接通过接口申请的dma buffer和通过allocator_host申请的dma buffer。 |
Guard | 保护段所占内存。 |
AnonPage Other | 其他所有匿名页所占内存(非heap、anon:native_heap、anon:ArkTS heap开头的匿名页)。 |
FilePage Other | 其它映射到文件页但不能被归类到.so/.db/.ttf类型的内存占用。 |
Dev | 进程加载的以/dev开头的文件所占内存。 |
Stack | 栈内存。 |
ArkWeb PA | 26.0.0版本新增。 Malloc内存分配。 |
JS Heap | 26.0.0版本新增。 ArkWeb Render进程JS堆内存占用。 |
.hap | 进程加载的.hap文件所占内存。 |
.so | 进程加载的.so动态库所占内存。 |
.ttf | 进程加载的.ttf字体文件所占内存。 |
图标,勾选ArkTS Allocation泳道。由于隐私安全政策,已上架应用市场的应用不支持录制此泳道。
从26.0.0版本开始,ArkTS Snapshot泳道支持解析内存对象,具体操作请参考解析内存对象。

单击工具控制栏中的
按钮,可以设置是否为统计模式、回栈模式、JS回栈、JS回栈深度、Native回栈深度、开启异步栈缝合等,设置项的具体说明请参考下表。

设置项名称 | 说明 |
|---|---|
Statistics Mode | 该项配置代表是否开启统计模式采集数据,默认开启。开启后,数据会每隔Sampling Interval中设置的时间从设备端汇总并返回。关闭后,处于非统计模式,每次内存分配后数据会实时从设备端返回。 |
Sampling Interval | 统计时间间隔。仅在统计模式下需要设置,可设置范围为1s~3600s,默认为10s。 |
Collect Only Unreleased Memory Events | 26.0.0版本新增。 在录制阶段,控制是否保留已释放内存的调用栈数据,默认开启。 开启时,尽量丢弃已释放的调用栈数据,保留未释放的调用栈数据,关注内存泄漏问题定位,减少对被调优应用的性能影响。 关闭时,保留全部申请和释放内存调用栈数据,需要分析内存分配和释放的完整生命周期,如排查内存抖动等问题。 |
All Heap & Anonymous VM Filter Size | 最小跟踪内存,该参数表示最小抓取的内存大小。 可配置范围为0-65535Bytes,默认为1024Bytes。 |
Sampling Size | DevEco Studio 6.1.1 Release版本新增。 内存数据采样大小,可配置范围为1-1048576Bytes,默认为4096Bytes。 配置后,仅对Native Heap和All Anonymous VM泳道中的mmap类型数据生效。 |
Backtrace Mode | 内存分配栈回栈模式。当前提供FP和DWARF两种回栈模式。FP回栈是通过帧指针(FP寄存器)链接栈帧,直接遍历调用链。DWARF回栈是基于编译器生成的DWARF调试信息进行栈回溯。默认FP回栈。 若选择FP回栈模式,支持配置JS Backtrace Depth(JS回栈深度)和Native Backtrace Depth(Native回栈深度)设置项;若选择DWARF回栈模式,支持配置Backtrace Depth(回栈深度)。 FP回栈性能更好,但在某些特定场景下(例如so的编译参数控制),FP回栈可能失效,此时可选择DWARF回栈尝试。 |
Record JS Stack | 是否开启JS回栈。开启后,系统回栈时会自动从Native向JS层回栈,完成Native到JS的栈缝合,适合ArkTS/JS代码调用Native的场景。 在DevEco Studio 6.1.0 Beta2之前版本,默认关闭。 从DevEco Studio 6.1.0 Beta2版本开始,默认开启。 |
JS Backtrace Depth | JS回栈深度。可配置范围为1-128,默认10层。 |
Native Backtrace Depth | Native回栈深度。可配置范围为5-100,默认10层。 |
Backtrace Depth | 回栈深度。仅当Backtrace Mode选择为DWARF模式的情况下存在,其层数代表着JS与Native的共同回栈深度。可配置范围为5-100,默认20层。 |
Sync Backtrace Depth | DevEco Studio 6.1.1 Beta1版本新增。 同步回栈深度。仅当Record Async Stack开启的情况下存在,其层数代表着JS与Native的共同同步回栈深度。可配置范围为5-100,默认20层。 |
Record Async Stack | DevEco Studio 6.1.1 Beta1版本新增。 用于开启异步栈缝合,默认关闭。仅当Backtrace Mode选择为FP模式时,支持开启。 26.0.0以下版本,开启后,异步回栈时支持多回一层异步栈帧,最大异步回栈层数为16层。 26.0.0及以上版本,支持通过Async Nesting Depth和Async Backtrace Depth设置异步栈嵌套层数和回栈层数。 |
Async Nesting Depth | 26.0.0版本新增。 异步栈嵌套层数,可配置范围为[1,16],推荐范围为[3,10],默认为3。 仅当Record Async Stack开启时,支持设置。 |
Async Backtrace Depth | 26.0.0版本新增。 异步回栈层数,指每个异步栈中显示的最大层数,可配置范围为[1,256],推荐范围为[16,32],默认16层。 仅当Record Async Stack开启时,支持设置。 |
Record Data Range Options | DevEco Studio 6.1.0 Release版本新增。 从26.0.1版本开始,勾选该设置项后才可录制ArkTS Heap泳道数据。 用于设置采样数据范围,包含Malloc、Local Handle和Global Handle,默认勾选Malloc。
|



图标,勾选Graphic Memory泳道。展开主泳道,包括Vulkan、OpenGL ES、OpenCL三条子泳道。由于隐私安全政策,已上架应用市场的应用不支持录制此泳道。
图标,勾选Native Leaks泳道。由于隐私安全政策,已上架应用市场的应用不支持录制此泳道。
按钮关闭Statistics Mode和Local Handle,否则影响正常录制。从26.0.1版本开始,Native Leaks泳道录制时,支持开启设置中的Statistics Mode(统计模式)。

从26.0.1版本开始,FilePage Other、.so、.ttf、.hap类型子泳道的Details区域中新增Path列,用于显示各采样点PSS占比最大的文件路径。选中采样点,右侧Path List列表按PSS占比降序显示文件路径,最多显示10条,占比为0的文件路径不显示。

主泳道:显示被选择进程所使用的所有ArkTS内存总和,框选后展示此时段内录制到的所有方舟实例的对象分配信息。
子泳道:显示当前框选时段内运行对象的内存使用情况,包括层级、对象自身内存大小、对象关联内存大小等。
Details区域中带
标识的对象,表示其可以通过窗口访问。每个时段内已经释放的内存标记为灰色,未释放的内存标记为绿色。


26.0.0及以上版本,无论是否开启统计模式,录制ArkTS Snapshot泳道,框选All Heap & Anonymous VM/All Heap/Native Heap子泳道,单击任一行栈帧,More区域都会显示经过该栈帧的分配内存最大的调用栈和ArkTS对象列表(ArkTS Object List)。
点击ArkTS Object List列表中的跳转按钮,跳转到ArkTS Snapshot泳道中的目标对象节点。
从26.0.0版本开始,点击右侧More区域中Heaviest Stack列表左侧的
按钮,将Heaviest Stack列表中的数据导出到本地进行保存。



Release应用暂不支持跳转到用户侧Native代码。
在设备连接完成后,可按照如下方法查看内存分析结果:

指定要录制的泳道。
可启动内存回收机制。
PSS:进程独占内存和按比例分配共享库占用内存之和。
RSS:进程独占内存和相关共享库占用内存之和。
USS:进程独占内存。
默认只显示PSS的统计图,如需要查看USS或RSS,需要在Memory泳道的右上角点选相关数据类型。

展开Memory泳道,子泳道展示的是按照内存类型将进程PSS值拆分开的各个维度的内存信息,类型包含ArkTS Heap/Native Heap/GL/Graph/Guard/AnonPage Other/FilePage Other/Dev/Stack/.hap/.so/.ttf。默认展示其中的五个子泳道,如要显示其他子泳道,可以点击主泳道的options标签并勾选其他泳道来查看。

子泳道 | 说明 |
|---|---|
ArkTS Heap | ArkTS堆的内存占用。 |
Native Heap | Native层(主要是应用依赖的so库的C/C++代码)使用new/malloc分配的堆内存。 |
GL | 包括应用和RS,应用为纹理内存,RS为纹理和图形渲染内存。 |
Graph | 该进程按去重规则统计的dma内存占用,包括直接通过接口申请的dma buffer和通过allocator_host申请的dma buffer。 |
Guard | 保护段所占内存。 |
AnonPage Other | 其他所有匿名页所占内存(非heap、anon:native_heap、anon:ArkTS heap开头的匿名页)。 |
FilePage Other | 其它映射到文件页但不能被归类到.so/.db/.ttf类型的内存占用。 |
Dev | 进程加载的以/dev开头的文件所占内存。 |
Stack | 栈内存。 |
.hap | 进程加载的.hap文件所占内存。 |
.so | 进程加载的.so动态库所占内存。 |
.ttf | 进程加载的.ttf字体文件所占内存。 |
图标,勾选ArkTS Allocation泳道。由于隐私安全政策,已上架应用市场的应用不支持录制此泳道。该泳道即将下线,推荐使用Snapshot模板分析ArkTS内存泄漏。
由于较大的性能开销可能导致卡顿/卡死问题,暂不支持同时录制ArkTS Allocation和Native Allocation两条泳道,以及ArkTS Allocation和Graphic Memory两条泳道。
按钮,可以设置是否为统计模式、统计间隔、最小跟踪内存、回栈模式、JS回栈、JS回栈深度和Native回栈深度。 配置项 | 说明 |
|---|---|
Statistics Mode | 该项配置代表是否开启统计模式采集数据,默认开启。开启后,数据会每隔Sampling Interval中设置的时间从设备端汇总并返回。关闭后,处于非统计模式,每次内存分配后数据会实时从设备端返回。 |
Sampling Interval | 统计时间间隔。仅在统计模式下需要设置,可设置范围为1s~3600s,默认为10s。 |
Native Allocation Filter Size | 最小跟踪内存,该参数表示最小抓取的内存大小。可配置范围为0-65535Bytes,默认为1024Bytes。 |
Backtrace Mode | 内存分配栈回栈模式。当前提供FP和DWARF两种回栈模式。FP回栈是通过帧指针(FP寄存器)链接栈帧,直接遍历调用链。DWARF回栈是基于编译器生成的DWARF调试信息进行栈回溯。默认FP回栈。FP回栈性能更好,但在某些特定场景下(例如so的编译参数控制),FP回栈可能失效,此时可选择DWARF回栈尝试。 |
Record JS Stack | 是否开启JS回栈。开启后,系统回栈时会自动从Native向JS层回栈,完成Native到JS的栈缝合,适合ArkTS/JS代码调用Native的场景。 |
JS Backtrace Depth | JS回栈深度。可配置范围为1-128,默认10层。 |
Native Backtrace Depth | Native回栈深度。可配置范围为5-100,默认10层。 |
Backtrace Stack | 回栈深度。仅当Backtrace Mode选择为DWARF模式的情况下存在,其层数代表着JS与Native的共同回栈深度。可配置范围为5-100,默认20层。 |

展开主泳道,包括Vulkan、OpenGL ES、OpenCL三条子泳道。其中Vulkan子泳道对应GPU_VK类型的内存分配数据,OpenGL ES子泳道对应GPU_GLES类型的内存分配数据,OpenCL子泳道对应GPU_CL类型的内存分配数据。


Graph字段统计方式为:计算/proc/process_dmabuf_info节点下该进程使用的内存大小。

“Details”区域中带
标识的对象,表示其可以通过窗口访问。每个时段内已经释放的内存标记为灰色,未释放的内存标记为绿色。

点击任意对象上的跳转按钮,可跳转至此类对象的详细占用/分配信息。当前统计模式下不支持跳转。
统计模式(Statistics Mode)开启后,不存在Allocations List信息。
选择任一对象,右侧会展示与该对象相关的所有库和调用者。

Release应用暂不支持跳转到用户侧Native代码。