1 关键字

稳定性测试;appfreeze;内存回收

2 问题描述

设备版本:3.2Release

使用DevEco Testing工具进行系统遍历测试,在测试过程中出现大量appfreeze问题。

img

3 问题原因

3.1 正常机制

使用DevEco Testing工具进行系统遍历测试,不会出现大量appfreeze问题。

img

3.2 异常机制

使用DevEco Testing工具进行系统遍历测试,在测试过程中出现大量appfreeze问题。

img

4 解决方案

调低系统内存回收阀值,避免频繁进行内存回收,占用较高cpu。

方法是修改foundation\resourceschedule\memmgr\profile\memmgr_config.xml 配置,然后重新编译。

修改前:

img

修改后

img

5 定位过程

通过对appfreeze文件进行分析,发现在出现appfreeze问题时,系统cpu占用较高,在cpu占用较高的情况下,系统相对卡顿,因此会出现大量appfreeze。通过观察cpu占用排行,发现其中有两个进程:kswapd0、zswapd0的cpu占用率高达10%以上,经过分析发现,这两个进程是专门进行内存回收的,由于8541E总共只有890M可用内存,设备在正常待机情况下,可用内存大概为500M,由于最开始的内存回收阀值为250M,进行稳定性压测过程中,大量进程会占用内存,总内存低于250M,就会进行内存回收,导致相关进程大量占用cpu,因此出现appfreeze。

6 知识分享

1.不同产品内存总量不同,需要对内存回收以及查杀进行合理的配置。

2.内存策略配置文件:foundation\resourceschedule\memmgr\profile\memmgr_config.xml。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐