【问题标题】:android java.lang.OutOfMemoryErrorandroid java.lang.OutOfMemoryError
【发布时间】:2010-05-30 10:04:00
【问题描述】:

当我从网站下载大数据时,我得到了这个错误信息:

I/global  (20094): Default buffer size used in BufferedInputStream constructor.
It would be better to be explicit if an 8k buffer is required.
D/dalvikvm(20094): GC freed 6153 objects / 3650840 bytes in 335ms
I/dalvikvm-heap(20094): Forcing collection of SoftReferences for 3599051-byte al
location
D/dalvikvm(20094): GC freed 320 objects / 11400 bytes in 144ms
E/dalvikvm-heap(20094): Out of memory on a 3599051-byte allocation.
I/dalvikvm(20094): "Thread-9" prio=5 tid=17 RUNNABLE
I/dalvikvm(20094):   | group="main" sCount=0 dsCount=0 s=0 obj=0x439b9480
I/dalvikvm(20094):   | sysTid=25762 nice=0 sched=0/0 handle=4065496

谁能帮帮我?

【问题讨论】:

  • 它显然内存不足...您到底需要什么帮助?
  • 至少提供完整的堆栈跟踪和一些有关如何下载数据的上下文信息(请参阅,错误消息说的是 BufferedInputStream)

标签: android out-of-memory


【解决方案1】:

单个应用程序无法访问所有可用的设备内存。如果您正在下载大型数据集,请考虑将其写入 SD 卡,而不是尝试将其完全保存在内存中。

【讨论】:

  • OutOfMemory 异常通常与磁盘内存无关,而是与堆或内存/内存有关。 (见java.sun.com/j2se/1.4.2/docs/api/java/lang/…
  • 嗨,adamp,我是写到 SDCard,但它仍然 OutOfMemory。你能告诉我如何回收 Drawable 吗?
  • @Toni:在尝试一次将整个数据集加载到内存中会导致 OOM 的情况下,您通常可以以块的形式处理与本地存储之间的数据。 @xiangdream:如果您的大数据是Drawables(BitmapDrawables?)形式的图像,请查看BitmapFactory解码方法和BitmapFactory.Options的inSampleSize字段。您可以在加载图像时将图像重新采样为更小的尺寸以节省内存。 developer.android.com/reference/android/graphics/… 更多有关您正在尝试做的事情的信息会有所帮助。 :)
猜你喜欢
  • 2016-11-12
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多