Android 堆有大量空间时内存不足的错误

Android 堆有大量空间时内存不足的错误,android,bitmap,out-of-memory,heap,Android,Bitmap,Out Of Memory,Heap,除非我读错了下面的内容,否则这个分配应该是绝对正确的 DDMS显示了一个 Heap size 15.3 Mb Allocated 8.211 Mb Free 7.11 Mb 我在垫子上做了一次倾倒(我不太熟悉),但显示了相同的效果 调试如下: E/dalvikvm堆(6989):1536000字节的外部分配对于 这个过程。E/dalvikvm(6989):内存不足:堆大小=15687KB, 已分配=10710KB,位图大小=8845KB E/GraphicsJNI(6989):虚拟机

除非我读错了下面的内容,否则这个分配应该是绝对正确的

DDMS显示了一个

Heap size 15.3 Mb
Allocated 8.211 Mb
Free      7.11 Mb
我在垫子上做了一次倾倒(我不太熟悉),但显示了相同的效果

调试如下:

E/dalvikvm堆(6989):1536000字节的外部分配对于 这个过程。E/dalvikvm(6989):内存不足:堆大小=15687KB, 已分配=10710KB,位图大小=8845KB E/GraphicsJNI(6989):虚拟机不会 让我们分配1536000字节


有人能解释一下吗?它快把我逼疯了?

哪一个是分配?不确定这是否完全相关,但你要在哪个版本的android上测试它?在3.0之前,位图存储在外部。这意味着,虽然它们对整个应用程序内存限制有贡献,但它们实际上并不存储在dalvik堆上。这意味着这些位图使用的内存将不会显示在DDMS或MAT上。每次我解码或创建位图时,它们都是1536000字节getRowBytes()*getHeight()@Wozza 2.3.5我知道关于DDMS,而不是MAT.I bm.recycle,在使用完所有位图后,我都会大量使用System.gc,仍然在考虑分配哪一个?不确定这是否完全相关,但您正在测试哪个版本的android?在3.0之前,位图存储在外部。这意味着,虽然它们对整个应用程序内存限制有贡献,但它们实际上并不存储在dalvik堆上。这意味着这些位图使用的内存将不会显示在DDMS或MAT上。每次我解码或创建位图时,它们都是1536000字节getRowBytes()*getHeight()@Wozza 2.3.5我知道关于DDMS,而不是MAT.I bm.recycle,使用完毕后,它们会大量地洒入System.gc,但仍然会有OOM