GPa*_*ack 9 android android-image bitmapfactory android-memory android-bitmap
我得到一个奇怪的Out of Memory错误解码一个可绘制的图像资源960x926px jpg,分配3555856字节.图像仅放在drawable-xxhdpi(3x)中,我使用的是hdpi(1.5x)设备.两个问题:
为什么我在堆中有足够的可用内存时会收到错误?
为hdpi设备分配应该是((960/2)x(926/2))x 4 = 888960字节(不是3555856)?
有人可以解释一下吗?
注意:问题是为什么在拥有22.5MB可用内存时获得3.5MB的OOM分配(参见日志)
03-18 17:30:15.050 32750-32750 /?D/dalvikvm:GC_FOR_ALLOC释放10809K,49%免费23735K/46087K,暂停89ms,总计89ms
03-18 17:30:15.050 32750-32750 /?I/dalvikvm-heap:强制收集3555856字节分配的SoftReferences
03-18 17:30:15.160 32750-32750 /?D/dalvikvm:GC_BEFORE_OOM释放29K, 49%免费23705K/46087K,暂停103ms,总计103ms
03-18 17:30:15.160 32750-32750 /?E/dalvikvm-heap:3555856字节分配的内存不足.
03-18 17:30:15.160 32750-32750 /?I/dalvikvm:"main"prio = 5 tid = 1 RUNNABLE
03-18 17:30:15.160 32750-32750 /?我/ dalvikvm:| group ="main"sCount = 0 dsCount = 0 obj = 0x418fc6a0 self = 0x4010c008
03-18 17:30:15.160 32750-32750 /?我/ dalvikvm:| sysTid = 32750 nice = 1 sched = 0/0 cgrp = apps handle = 1075251280
03-18 17:30:15.160 32750-32750 /?我/ dalvikvm:| schedstat =(0 0 0)utm = 3807 stm = 859 core = 0
03-18 17:30:15.160 32750-32750 /?I/dalvikvm:在android.graphics.BitmapFactory.nativeDecodeAsset(本机方法)
03-18 17:30:15.160 32750-32750 /?I/dalvikvm:在android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:636)
03-18 17:30:15.160 32750-32750 /?I/dalvikvm:在android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:484)03-18 17:30:15.160 32750-32750 /?I/dalvikvm:在android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:512)
03-18 17:30:15.160 32750-32750 /?I/dalvikvm:在android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:542)
1)如果 hdpi 文件夹中没有较小的版本,它将使用最接近的匹配。因此,如果不存在 hdpi 或可绘制/版本,它将使用 xxhdpi。
2)它不会自动缩放。它将以全尺寸阅读。
3) 如果这导致 OOM,那么您可能使用了太多内存。
| 归档时间: |
|
| 查看次数: |
1004 次 |
| 最近记录: |