当应用程序从“Splash”屏幕加载到“Main”页面时,会发生这种情况.它只发生在不在模拟器上的设备上:
05-17 08:10:16.627: I/dalvikvm-heap(14021): Grow heap (frag case) to 20.580MB for 2424256-byte allocation 05-17 08:10:16.666: D/dalvikvm(14021): GC_FOR_ALLOC freed 1K,3% free 21000K/21511K,paused 21ms 05-17 08:10:16.697: D/dalvikvm(14021): GC_CONCURRENT freed 116K,3% free 20885K/21511K,paused 2ms+2ms 05-17 08:10:16.720: D/dalvikvm(14021): GC_FOR_ALLOC freed 44K,4% free 20841K/21511K,paused 10ms 05-17 08:10:16.728: I/dalvikvm-heap(14021): Grow heap (frag case) to 24.533MB for 4310896-byte allocation
我使用Ecplise MAT – 字节分配解决 – Android.Graphics.Bitmap $预加载的图像…
我使用的设备是Google Nexus Prime,Android 4.0
有没有人遇到过相同的?有人可以扔一些专业知识….
解决方法
你可能试图解码一个非常大的Bitmap,导致OutOfMemory异常.这意味着您尝试实现的操作超出了您的设备上每个应用程序允许的虚拟机预算,这取决于堆内存消耗(在您的设备上显示为24 MB,可能更多在您的模拟器上,这就是为什么它不不会发生在那里!)
尝试以Bitmapby为例进行两次比较:
BitmapFactory.Options o = new BitmapFactory.Options(); o.inSampleSize = 2; Bitmap b = BitmapFactory.decodeFile(pathToBitmap,o);