vinc3m1 / RoundedImageView

A fast ImageView that supports rounded corners, ovals, and circles.
Other
6.44k stars 1.25k forks source link

java.lang.OutOfMemoryError #185

Closed Destiny01 closed 6 years ago

Destiny01 commented 7 years ago
             java.lang.OutOfMemoryError: Failed to allocate a 1800012 byte allocation with 532600 free bytes and 520KB until OOM
                                                                               at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                                                                               at android.graphics.Bitmap.nativeCreate(Native Method)
                                                                               at android.graphics.Bitmap.createBitmap(Bitmap.java:843)
                                                                               at android.graphics.Bitmap.createBitmap(Bitmap.java:820)
                                                                               at android.graphics.Bitmap.createBitmap(Bitmap.java:787)
                                                                               at com.makeramen.roundedimageview.RoundedDrawable.drawableToBitmap(RoundedDrawable.java:134)
                                                                               at com.makeramen.roundedimageview.RoundedDrawable.fromDrawable(RoundedDrawable.java:117)
                                                                               at com.makeramen.roundedimageview.RoundedDrawable.fromDrawable(RoundedDrawable.java:111)
                                                                               at com.makeramen.roundedimageview.RoundedImageView.setImageDrawable(RoundedImageView.java:233)
                                                                               at com.bumptech.glide.request.target.ImageViewTarget.setDrawable(ImageViewTarget.java:37)
                                                                               at com.bumptech.glide.request.animation.DrawableCrossFadeViewAnimation.animate(DrawableCrossFadeViewAnimation.java:49)
                                                                               at com.bumptech.glide.request.animation.DrawableCrossFadeViewAnimation.animate(DrawableCrossFadeViewAnimation.java:14)
                                                                               at com.bumptech.glide.request.target.ImageViewTarget.onResourceReady(ImageViewTarget.java:75)
                                                                               at com.bumptech.glide.request.target.GlideDrawableImageViewTarget.onResourceReady(GlideDrawableImageViewTarget.java:66)
                                                                               at com.bumptech.glide.request.target.GlideDrawableImageViewTarget.onResourceReady(GlideDrawableImageViewTarget.java:12)
                                                                               at com.bumptech.glide.request.GenericRequest.onResourceReady(GenericRequest.java:525)
                                                                               at com.bumptech.glide.request.GenericRequest.onResourceReady(GenericRequest.java:507)
                                                                               at com.bumptech.glide.load.engine.EngineJob.handleResultOnMainThread(EngineJob.java:158)
                                                                               at com.bumptech.glide.load.engine.EngineJob.access$100(EngineJob.java:22)
                                                                               at com.bumptech.glide.load.engine.EngineJob$MainThreadCallback.handleMessage(EngineJob.java:202)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:98)
                                                                               at android.os.Looper.loop(Looper.java:148)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5438)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
ArtemiyTerekhov commented 7 years ago

java.lang.OutOfMemoryError: Failed to allocate a 467868 byte allocation with 205264 free bytes and 200KB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.Bitmap.nativeCreate(Native Method) at android.graphics.Bitmap.createBitmap(Bitmap.java:831) at android.graphics.Bitmap.createBitmap(Bitmap.java:808) at android.graphics.Bitmap.createBitmap(Bitmap.java:775) at com.makeramen.roundedimageview.RoundedDrawable.drawableToBitmap(RoundedDrawable.java:134) at com.makeramen.roundedimageview.RoundedDrawable.fromDrawable(RoundedDrawable.java:117) at com.makeramen.roundedimageview.RoundedImageView.setImageDrawable(RoundedImageView.java:233) at com.bumptech.glide.request.target.GlideDrawableImageViewTarget.setResource(GlideDrawableImageViewTarget.java:80) at com.bumptech.glide.request.target.GlideDrawableImageViewTarget.setResource(GlideDrawableImageViewTarget.java:12) at com.bumptech.glide.request.target.ImageViewTarget.onResourceReady(ImageViewTarget.java:76) at com.bumptech.glide.request.target.GlideDrawableImageViewTarget.onResourceReady(GlideDrawableImageViewTarget.java:66) at com.bumptech.glide.request.target.GlideDrawableImageViewTarget.onResourceReady(GlideDrawableImageViewTarget.java:12) at com.bumptech.glide.request.GenericRequest.onResourceReady(GenericRequest.java:525) at com.bumptech.glide.request.GenericRequest.onResourceReady(GenericRequest.java:507) at com.bumptech.glide.load.engine.Engine.load(Engine.java:164) at com.bumptech.glide.request.GenericRequest.onSizeReady(GenericRequest.java:449) at com.bumptech.glide.request.target.ViewTarget$SizeDeterminer.notifyCbs(ViewTarget.java:177) at com.bumptech.glide.request.target.ViewTarget$SizeDeterminer.checkCurrentDimens(ViewTarget.java:193) at com.bumptech.glide.request.target.ViewTarget$SizeDeterminer.access$000(ViewTarget.java:161) at com.bumptech.glide.request.target.ViewTarget$SizeDeterminer$SizeDeterminerLayoutListener.onPreDraw(ViewTarget.java:292) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2060) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1112) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6035) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) at android.view.Choreographer.doCallbacks(Choreographer.java:670) at android.view.Choreographer.doFrame(Choreographer.java:606) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5451) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

paringer commented 7 years ago

I have out of memory, without glide, without picasso, 183k jpg image (1083x787), same line of code, different places, bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888); troubles here are :

  1. it do creates bitmap .
  2. it do it in size of original not in size of destination.
  3. natively drew ImageView does no harm.

it tries to create 7 mb bitmap and fails. at phone device, samsung SGH-T959. my code: ivBackground.setImageResource(R.drawable.placeholder_colored); so why not using something like shape drawable + bitmap shader, or compressed texture in native format

08-21 09:51:45.054 5622-5655/com.adjoy.standalone E/dalvikvm: Could not find class 'android.app.Notification$BigTextStyle', referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zza
08-21 09:51:45.082 5622-5655/com.adjoy.standalone E/dalvikvm: Could not find class 'android.app.AppOpsManager', referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zza
08-21 09:51:45.984 5622-5622/com.adjoy.standalone E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering
08-21 09:52:06.609 5622-5622/com.adjoy.standalone E/dalvikvm-heap: Out of memory on a 7676516-byte allocation.
08-21 09:52:08.148 5622-5622/com.adjoy.standalone E/AndroidRuntime: FATAL EXCEPTION: main
                                                                    java.lang.OutOfMemoryError
                                                                        at android.graphics.Bitmap.nativeCreate(Native Method)
                                                                        at android.graphics.Bitmap.createBitmap(Bitmap.java:605)
                                                                        at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
                                                                        at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437)
                                                                        at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:524)
                                                                        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:499)
                                                                        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351)
                                                                        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
                                                                        at android.content.res.Resources.loadDrawable(Resources.java:1968)
                                                                        at android.content.res.Resources.getDrawable(Resources.java:665)
                                                                        at com.makeramen.roundedimageview.RoundedImageView.resolveResource(RoundedImageView.java:269)
                                                                        at com.makeramen.roundedimageview.RoundedImageView.setImageResource(RoundedImageView.java:250)
                                                                        at com.adjoy.standalone.CampaignIntroActivity.onCreate(CampaignIntroActivity.java:27)
                                                                        at android.app.Activity.performCreate(Activity.java:4465)
                                                                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
                                                                        at android.app.ActivityThread.access$600(ActivityThread.java:123)
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                        at android.os.Looper.loop(Looper.java:137)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:4424)
                                                                        at java.lang.reflect.Method.invokeNative(Native Method)
                                                                        at java.lang.reflect.Method.invoke(Method.java:511)
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
                                                                        at dalvik.system.NativeStart.main(Native Method)
08-21 09:52:51.167 5622-5707/com.adjoy.standalone E/dalvikvm-heap: Out of memory on a 8294416-byte allocation.
enginebai commented 6 years ago

We encounter the same problem. Here is the stack trace:

Fatal Exception: java.lang.OutOfMemoryError
       at android.graphics.Bitmap.nativeCreate(Bitmap.java)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:726)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:703)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:670)
       at com.makeramen.roundedimageview.RoundedDrawable.drawableToBitmap(RoundedDrawable.java:134)
       at com.makeramen.roundedimageview.RoundedDrawable.fromDrawable(RoundedDrawable.java:117)
       at com.makeramen.roundedimageview.RoundedImageView.setImageDrawable(RoundedImageView.java:233)
       at com.bumptech.glide.request.target.GlideDrawableImageViewTarget.setResource(GlideDrawableImageViewTarget.java:1080)
       at com.bumptech.glide.request.target.ImageViewTarget.onResourceReady(ImageViewTarget.java:76)
       at com.bumptech.glide.request.target.GlideDrawableImageViewTarget.onResourceReady(GlideDrawableImageViewTarget.java:2066)
       at com.bumptech.glide.request.GenericRequest.onResourceReady(GenericRequest.java:525)
       at com.bumptech.glide.request.GenericRequest.onResourceReady(GenericRequest.java:507)
       at com.bumptech.glide.request.GenericRequest.com.bumptech.glide.load.engine.Engine.load(GenericRequest.java:3155)
       at com.bumptech.glide.request.target.ViewTarget.com.bumptech.glide.request.target.ViewTarget$SizeDeterminer.getSize(ViewTarget.java:1211)
       at com.bumptech.glide.request.GenericRequest.begin(GenericRequest.java:272)
       at com.bumptech.glide.GenericRequestBuilder.com.bumptech.glide.manager.RequestTracker.runRequest(GenericRequestBuilder.java:5037)
       at com.bumptech.glide.GenericRequestBuilder.into(GenericRequestBuilder.java:697)
       at com.bumptech.glide.DrawableRequestBuilder.into(DrawableRequestBuilder.java:448)
vinc3m1 commented 6 years ago

If you're using glide, you should use https://github.com/wasabeef/glide-transformations instead.