应用在使用过程中出现闪退,hilog日志中PROCESS_KILL的Reason为ResourceLeak:Ashmem Leak,memory_leak中生成memleak-kernel-[process_name]-0-sample和memleak-kernel-[process_name]-0-[timestamp]的内存泄漏日志文件。
应用进程触发ashmem泄漏的管控后,系统会抓取泄漏相关的信息,在memory_leak目录生成两个故障日志文件以供分析。
步骤一:分析采样日志memleak-native-[process_name]-[pid]-sample.txt。
排查ashmem内存增长情况,是否超过了hardThreshold,或是超过softThreshold长时间未下降。
日志如下:
memoryName:ashmem
softThreshold:2048(MB) <- 进程软门限
hardThreshold:4096(MB) <- 进程硬门限
topMemory:3387703(KB) <- ashmem内存峰值
time(s) kernelMemory(KB) realtime
0 219 310903 2026/01/06 18:24:21
1 439 1321613 2026/01/06 18:28:01
2 659 1307039 2026/01/06 18:31:41
3 879 1377038 2026/01/06 18:35:21
4 1099 1374640 2026/01/06 18:39:01
5 1319 1369825 2026/01/06 18:42:41
6 1539 1363453 2026/01/06 18:46:21
7 1759 1364565 2026/01/06 18:50:01
8 1979 1299033 2026/01/06 18:53:41
9 2199 1299033 2026/01/06 18:57:21
10 2419 1930830 2026/01/06 19:01:01
11 2639 2017218 2026/01/06 19:04:41
12 2859 1875315 2026/01/06 19:08:29
13 3079 3322171 2026/01/06 19:12:09
14 3299 3387703 2026/01/06 19:15:49
15 3519 3387703 2026/01/06 19:19:29
16 3739 3387703 2026/01/06 19:23:09
17 3959 3367434 2026/01/06 20:06:46
18 4179 3325124 2026/01/06 20:45:02
19 4399 3338757 2026/01/06 20:48:42
20 4619 3340933 2026/01/06 21:00:05 步骤二:分析维测日志memleak-native-[process_name]-[pid]-0-[timestamp]。
日志规格如下:
Generated by HiviewDFX @OpenHarmony LOGGER_MEMCHECK_GERNAL_INFO memoryName:ashmem softThreshold:2048(MB) hardThreshold:4096(MB) appHardThreshold:5460(MB) topMemory:3387703(KB) ***************************** LOGGER_MEMCHECK_MEMINFO <- 整机内存统计信息 MemTotal: 15815588 kB IonTotalUsed: 559284 kB GpuTotalUsed: 48576 kB AshmemUsed: 3340933 kB ************ endl ************ ***************************** LOGGER_MEMCHECK_PROC_INFO <- ashmem/ion/gpu对应泄漏内存节点信息打印(泄漏类型不同,落盘的内存信息不同) ASHMEM_PROCESS_INFO realtime: 2026/01/06 21:00:05 Process ashmem overview info: <- 所有进程ashmem概览信息 --------------------------------------------------------------------------------- Process_name Virtual_size Physical_size Total ashmem of [render_service] virtual size is 2568215348, physical size is 1387921408 Total ashmem of [com.hx.example] virtual size is 3099027904, physical size is 1609773056 // ... Process ashmem detail info: <- 进程ashmem详细信息 --------------------------------------------------------------------------------- Process_name Process_ID Fd Cnode_idx Applicant_Pid Ashmem_name Virtual_size Physical_size magic com.hx.example 19062 252 328421 19062 dev/ashmem/shared_memory/E... 4096 0 12188 com.hx.example 19062 291 328421 1388 dev/ashmem/gralloc_shared_attr 4096 4096 12161 com.hx.example 19062 271 328421 19062 dev/ashmem/Create PixelMap 11059200 11059200 31305 com.hx.example 19062 317 328421 19062 dev/ashmem/Create PixelMap 3686400 0 12830 // ... --------------------------------------------------------------------------------- ************ endl ************
步骤三:结合业务代码分析泄漏点。
排查方向: