Well, I would say, that System.gc() won't help you much. Since the purpose of yours is to stream an image from the internet, the best approach would probably be to write that stream into a file first. When that is done, you can create a Bitmap from this file.
On Wed, Oct 13, 2010 at 9:32 AM, DanH <danhi...@ieee.org> wrote: > I'm guessing it has to do with the bitmap size here: > > Out of memory: Heap Size=5639KB, Allocated=3134KB, Bitmap Size=18669KB > > The Android has a mysterious and troublesome bitmap caching scheme, > and sometimes this requires the explicit issuance of "System.gc" > calls, even though the Java book says that should never be necessary. > And the programmer can exacerbate the situation by not "cleaning up" > old images properly, though I'm a babe in the woods in terms of > understanding that snake pit. > > On Oct 12, 9:58 pm, n2v2rda2 <l...@unimocnc.co.kr> wrote: > > below is my code to make bitmap from network-jpeg-stream whose size > > is 360*288 > > i don't know how to handle it , > > > --------------------------------------------------------------------------------------------------------------- > > private void makeImage() { > > try { > > System.arraycopy(BA.toByteArray(), 0, > temporaryBA, 0, BA.length()); > > int tempBALength = BA.length(); > > > > if (BA.byteAt(startJpeg) == (byte) 0xff && > BA.byteAt(startJpeg + 1) > > == (byte) 0xD8) { > > if ((BA.byteAt(endJpeg - 1) == (byte) > 0xff && BA.byteAt(endJpeg) > > == (byte) 0xD9) > > || (BA.byteAt(endJpeg - > 2) == (byte) 0xff && BA.byteAt(endJpeg - > > 1) == (byte) 0xD9)) { > > > > BitmapFactory.Options options = > new BitmapFactory.Options(); > > options.inSampleSize = 2; > > options.inTempStorage = new > byte[256]; > > > > Bitmap orgBitmap = > BitmapFactory.decodeByteArray(temporaryBA, > > startJpeg, endJpeg - startJpeg +1,options); > > Bitmap bitmap = > Bitmap.createScaledBitmap(orgBitmap, width, > > (height / 2) , true); > > if (bitmap != null) { > > screenshot = new > byte[endJpeg - startJpeg +1]; > > > System.arraycopy(temporaryBA, startJpeg, screenshot, 0, endJpeg > > - startJpeg +1); > > > > Message msg = > Message.obtain(handler, 0, current_ch, 0, bitmap); > > handler.sendMessage(msg); > > } else { > > BA.clear(); > > } > > }else{ > > BA.clear(); > > } > > }else { > > BA.clear(); > > } > > BA.clear(); > > BA.setLength(0); > > BA.append(temporaryBA, iEndMarkIndex, > tempBALength - > > iEndMarkIndex); > > } catch (IllegalArgumentException e) { > > BA.clear(); > > } catch (OutOfMemoryError om) { > > BA.clear(); > > } catch (NullPointerException np) { > > BA.clear(); > > } catch (IndexOutOfBoundsException io) { > > BA.clear(); > > } > > } > > ---------------------------------------logcat - > > error---------------------------------------------------- > > > > 10-13 11:22:03.472: ERROR/dalvikvm-heap(6060): 384000-byte external > > allocation too large for this process. > > 10-13 11:22:03.472: ERROR/dalvikvm(6060): Out of memory: Heap > > Size=5639KB, Allocated=3134KB, Bitmap Size=18669KB > > 10-13 11:22:03.472: ERROR/(6060): VM won't let us allocate 384000 > > bytes > > 10-13 11:22:03.582: INFO/DEBUG(5641): *** *** *** *** *** *** *** *** > > *** *** *** *** *** *** *** *** > > 10-13 11:22:03.582: INFO/DEBUG(5641): Build fingerprint: 'skt_kr/ > > htc_bravo/bravo/bravo:2.1-update1/ERE27/171460:user/release-keys' > > 10-13 11:22:03.582: INFO/DEBUG(5641): pid: 6060, tid: 6081 >>> rams > > <<< > > 10-13 11:22:03.582: INFO/DEBUG(5641): signal 11 (SIGSEGV), fault addr > > 00000000 > > 10-13 11:22:03.582: INFO/DEBUG(5641): r0 003d48d0 r1 00000000 r2 > > 00000000 r3 003d48f4 > > 10-13 11:22:03.582: INFO/DEBUG(5641): r4 003d48d0 r5 00000000 r6 > > 00000000 r7 00000000 > > 10-13 11:22:03.582: INFO/DEBUG(5641): r8 483b3d08 r9 42ea2ed4 10 > > 483b3e38 fp 42ea2ed4 > > 10-13 11:22:03.582: INFO/DEBUG(5641): ip 003d48d0 sp 483b3ae8 lr > > 00000000 pc ac04ab2c cpsr 60000010 > > 10-13 11:22:03.612: INFO/DEBUG(5641): #00 pc 0004ab2c / > > system/lib/libskia.so > > 10-13 11:22:03.612: INFO/DEBUG(5641): #01 pc 0004abf0 / > > system/lib/libskia.so > > 10-13 11:22:03.612: INFO/DEBUG(5641): #02 pc 000689d4 / > > system/lib/libskia.so > > 10-13 11:22:03.622: INFO/DEBUG(5641): #03 pc 00064154 / > > system/lib/libskia.so > > 10-13 11:22:03.622: INFO/DEBUG(5641): #04 pc 0004446c / > > system/lib/libandroid_runtime.so > > 10-13 11:22:03.622: INFO/DEBUG(5641): code around pc: > > 10-13 11:22:03.622: INFO/DEBUG(5641): ac04ab1c 0a00001a e1a06005 > > ebffff9f e1a0c004 > > 10-13 11:22:03.622: INFO/DEBUG(5641): ac04ab2c e8b6000f e8ac000f > > e8b6000f e8ac000f > > 10-13 11:22:03.622: INFO/DEBUG(5641): ac04ab3c e8960003 e88c0003 > > e5950004 e3500000 > > 10-13 11:22:03.622: INFO/DEBUG(5641): code around lr: > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > 10-13 11:22:03.892: INFO/DEBUG(5641): debuggerd committing suicide to > > free the zombie! > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to android-developers@googlegroups.com > To unsubscribe from this group, send email to > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com> > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en -- Kumar Bibek http://techdroid.kbeanie.com http://www.kbeanie.com -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en