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

Reply via email to