Android:java.lang.OutOfMemoryError: Failed to allocate a 23970828 byte allocation with 2097152 free bytes and 2MB until OOM -
i want show bitmap image in imageview sd card stored already. after run application crash , getting outofmemoryerror error of:
(java.lang.outofmemoryerror: failed allocate 23970828 byte allocation 2097152 free bytes , 2mb until oom)
i have no idea or why out of memory. think image size large tried change it.
iterator<string> = imagearray.iterator(); while (it.hasnext()) { object element = it.next(); string objelement = element.tostring(); log.e("objelement ", " = " + objelement); final imageview imageview = new imageview (getcontext()); final progressbar pbar = new progressbar(getcontext(), null, android.r.attr.progressbarstylesmall); imageview.settag(it); pbar.settag(it); imageview.setimageresource(r.drawable.img_placeholder); pbar.setvisibility(view.visible); if (objelement.endswith(mp3_pattern)) { log.e("mp3 ", " ends "); pbar.setvisibility(view.gone); imageview.setimageresource(r.drawable.audio_control); } if (objelement.endswith(png_pattern)) { bitmap bitmap = bitmapfactory.decodefile(objelement); int size = math.min(bitmap.getwidth(), bitmap.getheight()); int x = (bitmap.getwidth() - size) / 2; int y = (bitmap.getheight() - size) / 2; bitmap bitmap_resul = bitmap.createbitmap(bitmap, x, y, size, size); log.e("bitmap_resul "," = "+ bitmap_resul); if (bitmap_resul != bitmap) { bitmap.recycle(); } imageview.setimagebitmap(bitmap_resul); log.e("png_pattern ", " ends "); log.e(" bitmap "," = " + bitmap); } holder.linearlayout.addview(imageview); holder.linearlayout.addview(pbar);
the log cat information:
08-27 14:11:15.307 1857-1857/? e/androidruntime﹕ fatal exception: main process: com.example.tazeen.classnkk, pid: 1857 java.lang.outofmemoryerror: failed allocate 23970828 byte allocation 2097152 free bytes , 2mb until oom @ dalvik.system.vmruntime.newnonmovablearray(native method) @ android.graphics.bitmap.nativecreate(native method) @ android.graphics.bitmap.createbitmap(bitmap.java:812) @ android.graphics.bitmap.createbitmap(bitmap.java:789) @ android.graphics.bitmap.createbitmap(bitmap.java:709) @ android.graphics.bitmap.createbitmap(bitmap.java:634) @ com.example.tazeen.classnkk.allposts_page$mylistadapter.getview(allposts_page.java:357) @ android.widget.abslistview.obtainview(abslistview.java:2347) @ android.widget.listview.makeandaddview(listview.java:1864) @ android.widget.listview.filldown(listview.java:698) @ android.widget.listview.fillfromtop(listview.java:759) @ android.widget.listview.layoutchildren(listview.java:1659) @ android.widget.abslistview.onlayout(abslistview.java:2151) @ android.view.view.layout(view.java:15671) @ android.view.viewgroup.layout(viewgroup.java:5038) @ android.widget.linearlayout.setchildframe(linearlayout.java:1703) @ android.widget.linearlayout.layoutvertical(linearlayout.java:1557) @ android.widget.linearlayout.onlayout(linearlayout.java:1466) @ android.view.view.layout(view.java:15671) @ android.view.viewgroup.layout(viewgroup.java:5038) @ android.widget.framelayout.layoutchildren(framelayout.java:579) @ android.widget.framelayout.onlayout(framelayout.java:514) @ android.view.view.layout(view.java:15671) @ android.view.viewgroup.layout(viewgroup.java:5038) @ android.widget.linearlayout.setchildframe(linearlayout.java:1703) @ android.widget.linearlayout.layoutvertical(linearlayout.java:1557) @ android.widget.linearlayout.onlayout(linearlayout.java:1466) @ android.view.view.layout(view.java:15671) @ android.view.viewgroup.layout(viewgroup.java:5038) @ android.widget.framelayout.layoutchildren(framelayout.java:579) @ android.widget.framelayout.onlayout(framelayout.java:514) @ android.view.view.layout(view.java:15671) @ android.view.viewgroup.layout(viewgroup.java:5038) @ android.view.viewrootimpl.performlayout(viewrootimpl.java:2086) @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:1843) @ android.view.viewrootimpl.dotraversal(viewrootimpl.java:1061) @ android.view.viewrootimpl$traversalrunnable.run(viewrootimpl.java:5885) @ android.view.choreographer$callbackrecord.run(choreographer.java:767) @ android.view.choreographer.docallbacks(choreographer.java:580) @ android.view.choreographer.doframe(choreographer.java:550) @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:753) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:135) @ android.app.activitythread.main(activitythread.java:5257) @ java.lang.reflect.method.invoke(native method) @ java.lang.reflect.method.invoke(method.java:372) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:903) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:698)
outofmemoryerror common problem occured in android while dealing bitmaps. error thrown java virtual machine (jvm) when object cannot allocated due lack of memory space , also, garbage collector cannot free space.
as mentioned aleksey, can add below entities in manifest file android:hardwareaccelerated="false"
, android:largeheap="true"
work environment's.
<application android:allowbackup="true" android:hardwareaccelerated="false" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:largeheap="true" android:supportsrtl="true" android:theme="@style/apptheme">
you should definately read of androids developer concept's, specially here:displaying bitmaps efficiently
read 5 topics , rewrite code again. if still doesn't work happy see you've done wrong tutorial material.
here of possible answers these type of errors in sof
android: bitmapfactory.decodestream() out of memory 400kb file 2mb free heap
how solve java.lang.outofmemoryerror trouble in android
Comments
Post a Comment