重复调用onWindowStageCreate内存泄漏案例分析
系统测试,dev分支daily整机测试kingkong测出内存泄漏-26次,最高内存达到2G。经系统稳定性人员协助定位,问题出现在com.example.xxx.meetimeservice ContactUIExtAbility中。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 怎么检查内存泄漏
455浏览 • 1回复 待解决
lottie动画组件存在严重的内存泄漏
1305浏览 • 1回复 待解决
HiLog打印日志(ArkTS) 打印日志有内存泄漏
418浏览 • 1回复 待解决
如何利用HarmonyOS NEXT的内存管理机制来减少内存泄漏和提高内存使用效率?
471浏览 • 0回复 待解决
如何处理鸿蒙应用中的内存泄漏问题?
81浏览 • 0回复 待解决
profiler内存泄露分析疑问:SyntheticRoot代表什么?
63浏览 • 1回复 待解决
A持有B,B引用A的场景如何处理才能避免内存泄漏
234浏览 • 1回复 待解决
#鸿蒙学习大百科#如何分析内存问题?
154浏览 • 1回复 待解决
在EntryAbility 类中的onWindowStageCreate()方法中调用px2vp() api 不生效
239浏览 • 1回复 待解决
如何避免因生命周期管理不当而导致的内存泄漏和应用崩溃?
339浏览 • 0回复 待解决
如何在线上快速进行heap dump(内存)、应用内存使用量、应用最大内存可用量进行读取和数据分析
1881浏览 • 1回复 待解决
onWindowStageCreate阶段throw error会导致应用卡在展示图标界面
1489浏览 • 1回复 待解决
MySQL重复列逻辑处理?
2492浏览 • 1回复 待解决
长按事件如何重复触发
1995浏览 • 1回复 待解决
在网络卡了的情况下,有没有可能不断重复地调用接口?
2250浏览 • 1回复 待解决
HarmonyOS HAR包被重复打包问题
415浏览 • 1回复 待解决
OceanBase业务案例有哪些?
3638浏览 • 1回复 待解决
应用崩溃分析服务,应用上架后的质量分析,比如自动集成崩溃分析这种
279浏览 • 1回复 待解决
HarmonyOS jsbridge能力暴露封装案例
105浏览 • 1回复 待解决
日志打印重复过多,影响定位
829浏览 • 1回复 待解决
HarmonyOS relationalStore数据库主线程插入多条重复的消息如何判断重复做准确?
285浏览 • 1回复 待解决
HarmonyOS ArkTS接口回调的案例
379浏览 • 1回复 待解决
Canvas如何触发刷新重复绘制?
816浏览 • 1回复 待解决
将字符串重复指定次数
307浏览 • 1回复 待解决
因为是kingkong跑出来的问题,并不能直接明确触发场景,所以最好能先定位出触发场景。
首先,根据故障日志进行分析,可以看出图中这两个时间段内存的涨幅比较大,针对性地去看这段时间的应用日志。
memleak-native-com.example.xxx.meetimeservice:ui-6647-sample.txt
分析了大量内存涨幅比较大时间段的日志,可以看出对应时间段只有亮灭屏、前后台切换的行为(下方日志举例)。当前就基本锁定了场景,本地试试该场景是否能复现。
本地复现场景,使用profile工具查看,符合预期结果,确实是前后台切换导致。
再对切换到前台日志进行分析,原本onWindowStageCreate()并不会在切换到前台时走,当前重复走了onWindowStageCreate()后,导致UIExtensionAbility重新渲染走了onSessionCreate()。
并且根据切换到后台日志可以看出onSessionDestroy()并没有走,这里就分析出内存泄漏的直接原因了。
总结
根据日志分析初步定位场景为畅连从后台切前台,本地验证该场景确实导致内存异常增长。通过snapshot看出后台切换到前台时,有大量内存增长;本地复现该场景查看日志,发现UIExtension的onSessionCreate生命周期重复在走,并且此前创建的session未执行onSessionDestroy,导致内存泄漏。之后分析代码发现在app的onNewWant生命周期中主动触发了onWindowStageCreate,导致每次进前台窗口都会重新加载。