- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在解码可绘制图像资源 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 freed 10809K, 49% free 23735K/46087K, paused 89ms, total 89ms
03-18 17:30:15.050 32750-32750/? I/dalvikvm-heap: Forcing collection of SoftReferences for 3555856-byte allocation
03-18 17:30:15.160 32750-32750/? D/dalvikvm: GC_BEFORE_OOM freed 29K, 49% free 23705K/46087K, paused 103ms, total 103ms
03-18 17:30:15.160 32750-32750/? E/dalvikvm-heap: Out of memory on a 3555856-byte allocation.
03-18 17:30:15.160 32750-32750/? I/dalvikvm: "main" prio=5 tid=1 RUNNABLE
03-18 17:30:15.160 32750-32750/? I/dalvikvm: | group="main" sCount=0 dsCount=0 obj=0x418fc6a0 self=0x4010c008
03-18 17:30:15.160 32750-32750/? I/dalvikvm: | sysTid=32750 nice=1 sched=0/0 cgrp=apps handle=1075251280
03-18 17:30:15.160 32750-32750/? I/dalvikvm: | schedstat=( 0 0 0 ) utm=3807 stm=859 core=0
03-18 17:30:15.160 32750-32750/? I/dalvikvm: at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
03-18 17:30:15.160 32750-32750/? I/dalvikvm: at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:636)
03-18 17:30:15.160 32750-32750/? I/dalvikvm: at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:484) 03-18 17:30:15.160 32750-32750/? I/dalvikvm: at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:512)
03-18 17:30:15.160 32750-32750/? I/dalvikvm: at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:542)
最佳答案
1)如果您在 hdpi 文件夹中没有较小的版本,它将使用最接近的匹配。因此,如果不存在 hdpi 或 drawable/版本,它将使用 xxhdpi。
2) 它不会自动缩放。它将以全尺寸阅读。
3)如果这导致 OOM,一般来说您可能使用了过多的内存。
关于android - BitmapFactory.decodeResource 和莫名其妙的Out of Memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36090677/
echo "Language"; echo " Select... English(US) English(AU)
好吧,我真的不知道为什么会这样。我目前正在实现一个线程容器,它以分离的方式运行无限循环,限制在每次迭代之间的特定速度。 标题: class timeloop { public: std::th
我收到 System.InvalidOperationException: Collection was modified;枚举操作可能无法执行: ExceptionLoggingLibrary.Lo
我是一名优秀的程序员,十分优秀!