android apk 内存不足,如何解决Android应用程序中的内存不足错误

我有一个自定义列表视图。 因为我列出了大约200张图片。这些图片存储在我的可绘制对象中。 我已经将图像转换为位图,并且将图像显示为位图。 每次打开活动时,图像都会列出。 这样,当我调用该活动约10次时,它崩溃了并且错误是

java.lang.OutOfMemoryError: bitmap size exceeds VM budget

然后我回收了位图,并通过使用System.gs函数得到了以下内容

Clamp target GC heap from 25.464MB to 24.000MB

GC freed 322 objects / 70664 bytes in 146ms

Clamp target GC heap from 25.471MB to 24.000MB

GC freed 2 objects / 48 bytes in 138ms

Forcing collection of SoftReferences for 10720-byte allocation

Clamp target GC heap from 25.269MB to 24.000MB

DEBUG/dalvikvm(15311): GC freed 5080 objects / 211168 bytes in 121ms

ERROR/dalvikvm-heap(15311): Out of memory on a 10720-byte allocation

现在至少我得到了这个Out of memory on a 10720-byte allocation错误

现在如何解决错误,请帮我的朋友

您是否可以避免将图像转换为位图,而是通过其资源ID引用它们?

您可以发布代码吗?

我们从中钳位目标GC堆是什么意思

让我们仔细检查您的情况:

是否每次都创建一个新活动,而您忘记完成上一个活动? 如果这样做,请确保通过将内存转储到.hprof文件中并使用MemoryAnalyzer(http://www.eclipse.org/mat/)来配置应用程序。 检查您在内存中拥有的活动实例数,以确保将其清除。

如果要重新加载相同的数据,则可能需要保留此活动,并在启动它时使用FLAG_ACTIVITY_REORDER_TO_FRONT,因此不需要重新创建

您的可绘制对象有多大? 您可能需要先调整大小,然后再将其设置为ImageView

让我考虑更多可能有用的内容,以后再添加

您是否尝试过将位图变量设置为软引用?

+1,但我认为您需要对软参考进行更多说明。

基本上,您可以使用几种引用类型来声明变量。 其中一个是软引用,另一个是WeakReferences。 还有更多..但是我忘了他们从我的头顶上掉下来。 通常,它所做的是通过给变量一定的引用层次结构来声明垃圾收集器何时收集变量。 这是一个很好的链接,给出了非常清晰的描述。 比我的要好得多。

对于Android应用程序,显然不建议使用Java软引用。 参见此处developer.android.com/training/displaying-bitmaps/以及stackoverflow.com/questions/11972441/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值