gpt4 book ai didi

android - 内存不足错误 : vast bitmap

转载 作者:行者123 更新时间:2023-11-29 00:39:26 25 4
gpt4 key购买 nike

我的 Activity 有 ListView ,并且(除了所有其他东西)从网络加载图像并将它们显示在 ListView 中。我可以使用 5 台安卓设备:2 台 HTC desire、LG P-350、一部手机和一台平板电脑。通常情况下,一切正常,但在 HTC 愿望之一上启动时,应用程序往往会因 NullPointerException 而崩溃,这是由于内存不足错误(我猜是这样),这是输出:

05-03 14:41:23.818: E/dalvikvm(843): Out of memory: Heap Size=7367KB, Allocated=4991KB, Bitmap Size=16979KB

稍后,logcat 输出 nullpointerexception 的堆栈跟踪,其中我的一个静态变量突然变为 null(该变量在应用程序的根 Activity 中初始化,在整个应用程序中使用,并且肯定不会在代码中为 null)。我想,由于内存不足,它被系统取消了。据我了解,系统尝试分配最大为 17mb 的位图——我确定加载的图像不会那么大。它们是 100*70 的 jpeg,它们中的任何一个的重量都远小于 1mb。我不明白的另一件事是为什么我只在一台设备上收到此错误 - 其他设备工作正常。

在我看来,这看起来很奇怪,我找不到任何线索,我需要建议。

最佳答案

原因很简单:内存不是保存你的 JPG 数据,而是它的解压缩等价物,不用说,它比源文件占用更多的 RAM 空间......请注意这个 17 MB 的限制适用于一次加载的所有位图,不一定是单个位图。

我不得不在我的一个程序中遇到类似的问题(Mapquest Android API MapView 对象的自定义 Tile 加载器),最后我不得不调用我的 recycle() 方法位图,以及手动强制系统使用 System.gc()...

在战略位置收集垃圾

很抱歉不能成为最好消息的传递者...

您可能会使用与我相同的策略来解决您的问题:我基本上将加载的位图缓存在硬盘中,例如我的外部 SD 卡,并在需要时即时重新加载它们,而不是试图将所有内容都保存在 RAM 中。

关于android - 内存不足错误 : vast bitmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10430077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com