You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
复现IDE版本:DevEco Studio 5.0.5 Release(DevEco Studio for Windows 5.0.13.240)
IDE下载地址https://developer.huawei.com/consumer/cn/download/deveco-studio
手机使用Mate60pro
复现内存泄漏工程见附件,有两个页面,首页和动画播放页
PAGVIew:动画播放页有一个可以切换148个pag动画的切换按钮,先从首页点击按钮进入动画播放页面,点击切换动画按钮可以切换并播放动画,切换148个动画后,再调用PAGViewController 的release释放资源按钮后,然后返回到上一页(触发动画页资源销毁),发现仍然存在无法释放的135M 的内存泄漏。
重复以上操作33遍后,无法释放的内存达到4.4GB,然后应用出现闪退
将工程里的PAGVIew改成PAGImageView后,同样的操作场景下发现切换到第130个动画的时候,点击释放资源按钮,然后返回首页,发现存在更严重的内存泄漏,有1.4G内存无法释放,除了release也找不到有其他能释放的接口
PAGView和PAGImageView可能是两类内存无法释放干净的问题
之前7月份反馈过这个问题#2909 ,当时只在一个pag动画上发现,以为只是每次0.7M的内存泄漏。最近发现不同的pag文件,内存泄漏的大小还不一样,有些单次泄漏有3-4M左右(好像带图片画面的pag会存在,不带图片的pag动画好像不存在明显的内存泄漏问题),一些pag动画播放后在调用PAGViewController 的release释放资源后,部分内存始终一直存在未释放。
内存泄漏可通过
hdc shell
ps -ef |grep "com.example.myapplication" 找到应用PID
hidumper --mem 应用PID
可以查看到内存操作前后变化 Graph(和DMA上显示的占用内一样)内存上涨了138272Kb
内存泄漏怀疑可能和PAGAnimator相关代码有关
https://github.com/Tencent/libpag/blob/main/src/platform/ohos/JPAGView.cpp 第201行只要调用过 animator->start();(播放动画后出现的内存泄漏),后面即使调用release 后 还是有部分内存还是无法释放
看android对应的代码,和ohos代码逻辑也存在实现上的差异
安卓中JPAGAnimator.cpp PAGAnimator::MakeFrom是传入的AnimatorListener
listener = std::make_shared(env, animatorObject);
animator = pag::PAGAnimator::MakeFrom(listener);
而ohos JPAGView.cpp里PAGAnimator::MakeFrom传入的是JPAGView
auto cView = std::make_shared(id);
cView->animator = PAGAnimator::MakeFrom(cView);
AI上也查了下https://github.com/Tencent/libpag/blob/main/src/rendering/PAGAnimator.cpp

复现工程上的这个使用场景比较常见,希望仓库大佬能帮忙解决一下,感谢
附件太大了,放网盘了
链接:https://pan.baidu.com/s/1JlagDJP72uTpk2qZMxwGqA?pwd=qwer
提取码:qwer
Beta Was this translation helpful? Give feedback.
All reactions