使用Picasso载入图片依然OOM的问题

发布于 2022-09-02 11:14:42 字数 326 浏览 18 评论 0

某Activity内的图片使用Picasso进行加载,图片是阿里云上的,在加载时进行了尺寸请求减小体积,Picasso再resize到ImageView的大小。
测试时已控制变量,将图片外的部分都移除了。
然而重复进入、退出这个Activity,内存检测中,allocated不断增加,偶尔会下降一点点,但是总体还是上升的,直到OOM奔溃。

用MAT也分析过了,内存都是用在了bitmap上。

1、请问是否有大牛碰到过类似情况,或指出我可能忽略的地方。
2、能否在Activity的OnDestroy内使用一些方法来将这些ImageView占有的内存手动释放掉。

谢谢帮助!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

可可 2022-09-09 11:14:42

用mat可以分析出bitmap的引用情况,看是哪个class引用没释放导致的

寻找我们的幸福 2022-09-09 11:14:42

1、查看大图放弃缓存
Picasso.with(getApplication())
.load(mURL)
.memoryPolicy(NO_CACHE, NO_STORE)
.into(imageView);
2、重写ImageView的onDetachedFromWindow方法,在它从屏幕中消失时回调,去掉drawable引用,能加快内存的回收。

℉絮湮 2022-09-09 11:14:42

看到楼主说内存几乎是持续在增加的,那 100% 可以肯定是发生了内存泄露,现在你应该做的是关注你这个 Activity是否成功被释放了?

花间憩 2022-09-09 11:14:42

Picasso 加载时需要注意图片的大小,Picasso需要人为设置自动调节大小,如果原图很大,但是题主通过列表进行加载没有手动设置那么就会出现问题,使用.fit().centerCrop()来自动调节图片大小,会根据你要展示的大小来调节。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文