JBirdVegas / external_jbirdvegas_mGerrit

mGerrit is a Gerrit instance viewer
19 stars 8 forks source link

OutOfMemoryException after changing screen orientation multiple times #48

Closed fracz closed 8 years ago

fracz commented 8 years ago

When I flip the phone (from horizontal to vertial and vice versa) mutliple times when browsing the source code of a change, the OutOfMemoryException is being thrown. I have to do this 10-15 times.

MGerrit 2.111.76, Android 4.1.2

Stack trace:

Justification: I'm not nitpicking. I was trying to reproduce #47 :-)

p4r4n01d commented 8 years ago

There does seem to be something to this and it seems to be only a problem with the diff viewer. Saving and restoring the state will need to be looked into here. Attached relevant logs for reference:

02-23 20:48:39.696 31235-8420/com.jbirdvegas.mgerrit W/art: Long monitor contention event with owner method=java.nio.charset.Charset java.nio.charset.Charset.forName(java.lang.String) from Charset.java:283 waiters=17 for 853ms
02-23 20:48:40.427 31235-6790/com.jbirdvegas.mgerrit W/art: Suspending all threads took: 720.868ms
02-23 20:48:40.448 31235-31240/com.jbirdvegas.mgerrit W/art: Suspending all threads took: 361.287ms
02-23 20:48:40.470 31235-8007/com.jbirdvegas.mgerrit W/art: Suspending all threads took: 42.607ms
02-23 20:48:40.504 31235-31240/com.jbirdvegas.mgerrit W/art: Suspending all threads took: 30.609ms
02-23 20:48:47.977 16287-16322/system_process E/ActivityManager: ANR in com.jbirdvegas.mgerrit (com.jbirdvegas.mgerrit/.activities.DiffViewer)
                                                                 PID: 31235
                                                                 Reason: Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago.  Wait queue length: 9.  Wait queue head age: 6145.0ms.)
                                                                 Load: 28.98 / 24.74 / 15.0
                                                                 CPU usage from 0ms to 7927ms later:
                                                                   98% 31235/com.jbirdvegas.mgerrit: 6.4% user + 92% kernel / faults: 532 minor 2 major
                                                                   56% 16287/system_server: 13% user + 43% kernel / faults: 10005 minor 476 major
                                                                   6.9% 17254/com.android.phone: 2.6% user + 4.2% kernel / faults: 4484 minor 94 major
                                                                   5.5% 16552/com.android.systemui: 2.2% user + 3.2% kernel / faults: 2987 minor 237 major
                                                                   0% 4112/debuggerd: 0% user + 0% kernel / faults: 5980 minor 157 major
                                                                   3.5% 27296/com.google.android.apps.inbox: 1.5% user + 2% kernel / faults: 1475 minor 19 major
                                                                   2.5% 16590/com.android.nfc: 0.7% user + 1.7% kernel / faults: 1943 minor 1272 major
                                                                   2.5% 31005/adbd: 0.3% user + 2.1% kernel / faults: 1977 minor
                                                                   2.1% 17170/com.quicinc.cne.CNEService: 0.8% user + 1.2% kernel / faults: 2367 minor 779 major
                                                                   2% 362/surfaceflinger: 0.6% user + 1.3% kernel / faults: 31 minor
                                                                   0% 4113/debuggerd64: 0% user + 0% kernel / faults: 3897 minor 106 major
                                                                   1.3% 17195/org.cyanogenmod.audiofx: 0.6% user + 0.7% kernel / faults: 1796 minor 635 major
                                                                   1.2% 274/mmcqd/0: 0% user + 1.2% kernel
                                                                   1% 17220/com.qualcomm.qti.rcsbootstraputil: 0.3% user + 0.6% kernel / faults: 1739 minor 132 major
                                                                   1% 17234/com.qualcomm.qti.rcsimsbootstraputil: 0.5% user + 0.5% kernel / faults: 1609 minor 115 major
                                                                   0.8% 8/rcu_preempt: 0% user + 0.8% kernel
                                                                   0.6% 3/ksoftirqd/0: 0% user + 0.6% kernel
                                                                   0.6% 4114/rild: 0.5% user + 0.1% kernel / faults: 156 minor
                                                                   0.5% 202/irq/504-synapti: 0% user + 0.5% kernel
                                                                   0.5% 17634/com.google.android.gms.persistent: 0.2% user + 0.2% kernel / faults: 98 minor 5 major
                                                                   0.3% 20/ksoftirqd/3: 0% user + 0.3% kernel
                                                                   0.3% 283/msm-core:sampli: 0% user + 0.3% kernel
                                                                   0.3% 5625/kworker/u12:2: 0% user + 0.3% kernel
                                                                   0.2% 12/ksoftirqd/1: 0% user + 0.2% kernel
                                                                   0.2% 46/kworker/u13:0: 0% user + 0.2% kernel
                                                                   0.2% 129/kswapd0: 0% user + 0.2% kernel
                                                                   0.2% 323/logd: 0.2% user + 0% kernel / faults: 3 minor
                                                                   0.2% 4119/qmuxd: 0.1% user + 0.1% kernel / faults: 51 minor
                                                                   0.2% 4120/perfd: 0.1% user + 0.1% kernel / faults: 48 minor
                                                                   0.2% 16878/VosMCThread: 0% user + 0.2% kernel
                                                                   0.2% 22675/kworker/1:2: 0% user + 0.2% kernel
                                                                   0.2% 27078/com.google.android.gms: 0.1% user + 0.1% kernel / faults: 397 minor 1 major
                                                                   0.2% 29414/kworker/3:3: 0% user + 0.2% kernel
                                                                   0.2% 29430/kworker/u12:19: 0% user + 0.2% kernel
                                                                   0.2% 29432/kworker/u12:21: 0% user + 0.2% kernel
                                                                   0.2% 29701/kworker/0:4: 0% user + 0.2% kernel
                                                                   0.2% 31253/logcat: 0.2% user + 0% kernel / faults: 4 minor
                                                                   0.1% 16/ksoftirqd/2: 0% user + 0.1% kernel
                                                                   0.1% 157/hwrng: 0% user + 0.1% kernel
                                                                   0.1% 192/spi7: 0% user + 0.1% kernel
                                                                   0.1% 252/cfinteractive: 0% user + 0.1% kernel
                                                                   0.1% 361/servicemanager: 0% user + 0.1% kernel
                                                                   0.1% 408/irq/215-fc38800: 0% user + 0.1% kernel
                                                                   0.1% 4124/thermal-engine: 0% user + 0.1% kernel
                                                                   0.1% 5556/mdss_fb0: 0% user + 0.1% kernel
                                                                   0.1% 16018/mediaserver: 0% user + 0.1% kernel / faults: 27 minor 8 major
                                                                   0.1% 27840/kworker/0:2: 0% user + 0.1% kernel
                                                                 55% TOTAL: 9.6% user + 42% kernel + 2.4% iowait + 0.4% irq + 0.2% softirq
                                                                 CPU usage from 7006ms to 7614ms later with 99% awake:
                                                                   100% 31235/com.jbirdvegas.mgerrit: 1.6% user + 98% kernel / faults: 24 minor
                                                                     100% 31240/Signal Catcher: 1.6% user + 98% kernel
                                                                   18% 16287/system_server: 3.2% user + 14% kernel / faults: 4 minor
                                                                     16% 16322/ActivityManager: 3.2% user + 13% kernel
                                                                   0.9% 3/ksoftirqd/0: 0% user + 0.9% kernel
                                                                   0.9% 8/rcu_preempt: 0% user + 0.9% kernel
                                                                   0.9% 157/hwrng: 0% user + 0.9% kernel
                                                                   0.9% 283/msm-core:sampli: 0% user + 0.9% kernel
                                                                   1.6% 362/surfaceflinger: 0% user + 1.6% kernel
                                                                     3.2% 563/EventThread: 0% user + 3.2% kernel
                                                                   1.6% 27296/com.google.android.apps.inbox: 0% user + 1.6% kernel / faults:
02-23 20:48:53.102 16287-16323/system_process W/ActivityManager:   Force finishing activity com.jbirdvegas.mgerrit/.activities.DiffViewer
02-23 20:48:53.392 16287-17284/system_process W/ActivityManager: Scheduling restart of crashed service com.jbirdvegas.mgerrit/.tasks.GerritService in 1000ms
02-23 20:48:53.629 11320-11320/com.jbirdvegas.mgerrit W/System: ClassLoader referenced unknown path: /data/app/com.jbirdvegas.mgerrit-1/lib/arm64
p4r4n01d commented 8 years ago

I have released an update with a number of improvements to the diff viewer, let me know if that fixes your issue. Still have some work to do regarding caching of images in the diff viewer though.

p4r4n01d commented 8 years ago

The diff viewer was updated again as of the release last week to cache diff images, included in PR #51. This was included in release 2.111.82.