1

Yeah, I've already checked the other links but this doesn't seem to be any duplicate question nor was I able to fix the issue with either of such questions on StackOverflow.

Similar links:

The links with such issue are dealing with images but on the contrary, I'm just dealing with Undo feature, set as menu in custom ToolBar.

The strange thing about this is, I'm able to run the code in my emulator (causes a bit delay though) but am unable to run on a live/real device (Xiaomi Redmi Note 4)

GitHub source: https://github.com/viditkothari/RoulettePredictor

The log details:

08-11 01:37:27.522 6885-6946/studio.irisdesigns.roulettepredictor I/OpenGLRenderer: Initialized EGL, version 1.4
08-11 01:37:33.856 6885-6885/studio.irisdesigns.roulettepredictor I/ListPopupWindow: Could not find method setEpicenterBounds(Rect) on PopupWindow. Oh well.
08-11 01:37:33.930 6885-6895/studio.irisdesigns.roulettepredictor I/art: Clamp target GC heap from 194MB to 192MB
08-11 01:37:34.414 6885-6885/studio.irisdesigns.roulettepredictor I/art: Starting a blocking GC Alloc
08-11 01:37:34.414 6885-6885/studio.irisdesigns.roulettepredictor I/art: Starting a blocking GC Alloc
08-11 01:37:34.418 6885-6885/studio.irisdesigns.roulettepredictor I/art: Starting a blocking GC Alloc
08-11 01:37:34.427 6885-6885/studio.irisdesigns.roulettepredictor I/art: Clamp target GC heap from 194MB to 192MB
08-11 01:37:34.427 6885-6885/studio.irisdesigns.roulettepredictor I/art: Alloc partial concurrent mark sweep GC freed 61(2640B) AllocSpace objects, 0(0B) LOS objects, 7% free, 178MB/192MB, paused 140us total 8.863ms
08-11 01:37:34.428 6885-6885/studio.irisdesigns.roulettepredictor I/art: Starting a blocking GC Alloc
08-11 01:37:34.441 6885-6885/studio.irisdesigns.roulettepredictor I/art: Clamp target GC heap from 194MB to 192MB
08-11 01:37:34.442 6885-6885/studio.irisdesigns.roulettepredictor I/art: Alloc concurrent mark sweep GC freed 8(12KB) AllocSpace objects, 0(0B) LOS objects, 7% free, 178MB/192MB, paused 137us total 13.655ms
08-11 01:37:34.442 6885-6885/studio.irisdesigns.roulettepredictor I/art: Forcing collection of SoftReferences for 146MB allocation
08-11 01:37:34.442 6885-6885/studio.irisdesigns.roulettepredictor I/art: Starting a blocking GC Alloc
08-11 01:37:34.456 6885-6885/studio.irisdesigns.roulettepredictor I/art: Clamp target GC heap from 194MB to 192MB
08-11 01:37:34.456 6885-6885/studio.irisdesigns.roulettepredictor I/art: Alloc concurrent mark sweep GC freed 11(352B) AllocSpace objects, 0(0B) LOS objects, 7% free, 178MB/192MB, paused 136us total 13.215ms
08-11 01:37:34.456 6885-6885/studio.irisdesigns.roulettepredictor W/art: Throwing OutOfMemoryError "Failed to allocate a 153809616 byte allocation with 14153728 free bytes and 13MB until OOM"
08-11 01:37:34.456 6885-6885/studio.irisdesigns.roulettepredictor I/art: Starting a blocking GC Alloc
08-11 01:37:34.456 6885-6885/studio.irisdesigns.roulettepredictor I/art: Starting a blocking GC Alloc
08-11 01:37:34.460 6885-6885/studio.irisdesigns.roulettepredictor I/art: Starting a blocking GC Alloc
08-11 01:37:34.469 6885-6885/studio.irisdesigns.roulettepredictor I/art: Clamp target GC heap from 194MB to 192MB
08-11 01:37:34.469 6885-6885/studio.irisdesigns.roulettepredictor I/art: Alloc partial concurrent mark sweep GC freed 6(192B) AllocSpace objects, 0(0B) LOS objects, 7% free, 178MB/192MB, paused 138us total 8.848ms
08-11 01:37:34.470 6885-6885/studio.irisdesigns.roulettepredictor I/art: Starting a blocking GC Alloc
08-11 01:37:34.483 6885-6885/studio.irisdesigns.roulettepredictor I/art: Clamp target GC heap from 194MB to 192MB
08-11 01:37:34.483 6885-6885/studio.irisdesigns.roulettepredictor I/art: Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 7% free, 178MB/192MB, paused 136us total 13.059ms
08-11 01:37:34.484 6885-6885/studio.irisdesigns.roulettepredictor I/art: Forcing collection of SoftReferences for 146MB allocation
08-11 01:37:34.484 6885-6885/studio.irisdesigns.roulettepredictor I/art: Starting a blocking GC Alloc
08-11 01:37:34.497 6885-6885/studio.irisdesigns.roulettepredictor I/art: Clamp target GC heap from 194MB to 192MB
08-11 01:37:34.497 6885-6885/studio.irisdesigns.roulettepredictor I/art: Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 7% free, 178MB/192MB, paused 137us total 13.042ms
08-11 01:37:34.498 6885-6885/studio.irisdesigns.roulettepredictor W/art: Throwing OutOfMemoryError "Failed to allocate a 153809616 byte allocation with 14153728 free bytes and 13MB until OOM"
08-11 01:37:34.498 6885-6885/studio.irisdesigns.roulettepredictor D/skia: --- allocation failed for scaled bitmap
08-11 01:37:34.504 6885-6885/studio.irisdesigns.roulettepredictor D/AndroidRuntime: Shutting down VM


                                                                                    --------- beginning of crash
08-11 01:37:34.505 6885-6885/studio.irisdesigns.roulettepredictor E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                    Process: studio.irisdesigns.roulettepredictor, PID: 6885
                                                                                    java.lang.OutOfMemoryError: Failed to allocate a 153809616 byte allocation with 14153728 free bytes and 13MB until OOM
                                                                                        at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                                                                                        at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
                                                                                        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:613)
                                                                                        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:446)
                                                                                        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080)
                                                                                        at android.content.res.Resources.createFromResourceStream(Resources.java:2952)
                                                                                        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2684)
                                                                                        at android.content.res.Resources.loadDrawable(Resources.java:2580)
                                                                                        at android.content.res.MiuiResources.loadDrawable(MiuiResources.java:387)
                                                                                        at android.content.res.Resources.getDrawable(Resources.java:824)
                                                                                        at android.content.Context.getDrawable(Context.java:467)
                                                                                        at android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:30)
                                                                                        at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:372)
                                                                                        at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:202)
                                                                                        at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:190)
                                                                                        at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)
                                                                                        at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:425)
                                                                                        at android.support.v7.view.menu.ListMenuItemView.initialize(ListMenuItemView.java:116)
                                                                                        at android.support.v7.view.menu.MenuAdapter.getView(MenuAdapter.java:100)
                                                                                        at android.support.v7.view.menu.MenuPopup.measureIndividualMenuWidth(MenuPopup.java:160)
                                                                                        at android.support.v7.view.menu.StandardMenuPopup.tryShow(StandardMenuPopup.java:153)
                                                                                        at android.support.v7.view.menu.StandardMenuPopup.show(StandardMenuPopup.java:187)
                                                                                        at android.support.v7.view.menu.MenuPopupHelper.showPopup(MenuPopupHelper.java:290)
                                                                                        at android.support.v7.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:175)
                                                                                        at android.support.v7.widget.ActionMenuPresenter$OpenOverflowRunnable.run(ActionMenuPresenter.java:803)
                                                                                        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:5438)
                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
08-11 01:37:34.515 6885-6885/studio.irisdesigns.roulettepredictor I/Process: Sending signal. PID: 6885 SIG: 9
viditkothari
  • 90
  • 11
  • 2
    153809616 bytes is an absolutely huge image, equivalent to a 6200 x 6200 pixel square image. It is possible that MIUI is somehow affecting this, since their code is in the middle of your stack trace. But I suggest that you first start by identifying exactly what in your action bar is triggering this crash, then try to fix the image that you are using there. – CommonsWare Aug 10 '17 at 20:35
  • I thought the error message was pretty telling `Failed to allocate a 153809616 byte allocation with 14153728 free bytes and 13MB until OOM` – Yohannes Gebremariam Aug 10 '17 at 20:39
  • Of course, the log tells that the error is about memory allocation, but unlike what @CommonsWare and many are thinking, there is no code handling image, there is nothing like image handling in my app. The issue occurs when handling a menu item at the top AppBar with custom Toolbar layout – viditkothari Aug 12 '17 at 12:56
  • "there is no code handling image, there is nothing like image handling in my app" -- yes there is. You can see it in the stack trace. It happens to be coming from a library (`appcompat-v7`), but libraries are part of your app. Most likely, this is coming from some icon that you are using in an action item (see the `at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:425)` stack trace line). So, as I suggested, start by identifying exactly what in your action bar is triggering this crash, then try to fix the image that you are using there. – CommonsWare Aug 12 '17 at 13:00
  • @CommonsWare, as you said. I checked my drawables and found two icons which were 62KB size. Do you think that 62KB is the culprit? And also, I tried running the same application (untouched; which caused error in real device) in an emulator and the Android Monitor gave me 'something like' this: `08-12 14:47:38.245 11987-11987/studio.irisdesigns.roulettepredictor I/dalvikvm: Could not find method android.widget.PopupWindow.setEnterTransition, referenced from method android.support.v7.widget.MenuPopupWindow.setEnterTransition` – viditkothari Aug 12 '17 at 18:51
  • `08-12 14:47:38.245 11987-11987/studio.irisdesigns.roulettepredictor I/ListPopupWindow: Could not find method setEpicenterBounds(Rect) on PopupWindow. Oh well. 08-12 14:47:38.275 11987-11987/studio.irisdesigns.roulettepredictor D/dalvikvm: GC_FOR_ALLOC freed 594K, 3% free 22589K/23260K, paused 2ms, total 4ms 08-12 14:47:38.335 11987-11987/studio.irisdesigns.roulettepredictor I/dalvikvm-heap: Grow heap (frag case) to 171.227MB for 156339624-byte allocation` – viditkothari Aug 12 '17 at 18:55
  • If you mean 62KB in *file size*, that icon is massive and needs to be reduced in resolution to something sensible. Looking at file size is pointless. The resolution is what matters, because it is the resolution (plus any automatic scaling due to poor choices of resource directory) that determines your memory consumption. The last line of your `LogCat` lines in your comments shows the same allocation; this time, it happened to succeed, which will not be especially often. – CommonsWare Aug 12 '17 at 19:38
  • Thank you so much @CommonsWare. You helped greatly! – viditkothari Aug 12 '17 at 20:23

0 Answers0