2010-05-30 16 views
6

Quando scarico dati di grandi dimensioni dal sito web, ho ottenuto queste informazioni di errore:java.lang.OutOfMemoryError Android

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 

qualcuno mi può aiutare?

+0

Si esaurisce la memoria, a quanto pare ... con cosa esattamente hai bisogno di aiuto? – flodin

+2

Fornire almeno lo stacktrace completo e alcune informazioni di contesto su come si scaricano i dati (vedere, il messaggio di errore parla di BufferedInputStream) –

risposta

1

Le singole app non hanno accesso a tutta la memoria del dispositivo disponibile. Se stai scaricando un set di dati di grandi dimensioni, considera di scriverlo sulla scheda SD mentre vai piuttosto che cercare di tenerlo interamente in memoria.

+4

Le eccezioni OutOfMemory di solito non hanno a che fare con la memoria del disco ma con heap o memoria/ram. (vedi http://java.sun.com/j2se/1.4.2/docs/api/java/lang/OutOfMemoryError.html) –

+0

ciao, adamp, ero stato collegato a SDCard, ma ancora OutOfMemory. Potresti dirmi come riciclare Drawable? – androiddream

+0

@Toni: spesso è possibile elaborare i dati in blocchi da o verso la memoria locale in situazioni in cui il tentativo di caricare l'intero set di dati in memoria in una volta risulterebbe in OOM. @xiangdream: se i tuoi dati di grandi dimensioni sono immagini sotto forma di Drawables (BitmapDrawables?) Dai un'occhiata ai metodi di decodifica BitmapFactory e al campo inSampleSize di BitmapFactory.Options. Puoi ricampionare un'immagine ad una dimensione più piccola mentre la carica per risparmiare memoria. http://developer.android.com/reference/android/graphics/BitmapFactory.html Altre informazioni su ciò che stai cercando di fare sarebbero utili. :) – adamp

Problemi correlati