ANR分析-WaitingPerformingGc

来源:互联网 发布:Linux修改进程名字 编辑:程序博客网 时间:2024/06/08 01:05


10-12 17:32:02.726 1120 1159 I am_anr : [0,17331,com.flipkart.android,955792964,Input dispatching timed out (Waiting to send key event because the focused window has not finished processing all of the input events that were previously delivered to it. Outbound queue length: 0. Wait queue length: 1.)]1120  1754 I am_crash: [17331,0,com.flipkart.android,955792964,java.lang.OutOfMemoryError,Failed to allocate a 503316488 byte allocation with 16765216 free bytes and 135MB until OOM,Arrays.java,3352]


分析得知,应用主线程执行GC操作,导致主线程内存被block住,由于当前没有打印出当前com.flipkart.android申请的内存对象有多少,
当时查看后续log,发现在发生ANR差不多的时候,com.flipkart.android发生了OOM行为,代表申请的内存对象很多,
,导致GC扫描时间过程过长,产生ANR.

此问题是com.flipkart.android用进程内存存在泄漏或使用不当,导致GC时间处理过程长,产生ANR,需要三方解决OOM的行为.


10-12 17:32:04.192 17331 17331 E AndroidRuntime: java.lang.OutOfMemoryError: Failed to allocate a 503316488 byte allocation with 16765216 free bytes and 135MB until OOM


"main" prio=5 tid=1 WaitingPerformingGc  | group="main" sCount=1 dsCount=0 obj=0x744665c8 self=0xec005400  | sysTid=17331 nice=-4 cgrp=default sched=0/0 handle=0xef58f534  | state=R schedstat=( 8677880253 78273001 1138 ) utm=814 stm=52 core=7 HZ=100  | stack=0xff4d5000-0xff4d7000 stackSize=8MB  | held mutexes= "heap bitmap lock"(exclusive held) "mutator lock"(shared held)  kernel: __switch_to+0x94/0xa8  kernel: preempt_count_sub+0x2c/0x6c  kernel: __this_cpu_preempt_check+0x18/0x20  kernel: 0xffffffc0013423a8  native: #00 pc 00179392  /system/lib/libart.so (_ZN3art6mirror6Object15VisitReferencesILb1ELNS_17VerifyObjectFlagsE0ELNS_17ReadBarrierOptionE0ENS_2gc9collector11MarkVisitorENS6_29DelayReferenceReferentVisitorEEEvRKT2_RKT3_+29)  native: #01 pc 00175873  /system/lib/libart.so (_ZN3art2gc9collector9MarkSweep16ProcessMarkStackEb+206)  native: #02 pc 001749e9  /system/lib/libart.so (_ZN3art2gc9collector9MarkSweep20MarkReachableObjectsEv+32)  native: #03 pc 00173915  /system/lib/libart.so (_ZN3art2gc9collector9MarkSweep12MarkingPhaseEv+132)  native: #04 pc 001737ad  /system/lib/libart.so (_ZN3art2gc9collector9MarkSweep9RunPhasesEv+144)  native: #05 pc 0016e535  /system/lib/libart.so (_ZN3art2gc9collector16GarbageCollector3RunENS0_7GcCauseEb+248)  native: #06 pc 00191a4d  /system/lib/libart.so (_ZN3art2gc4Heap22CollectGarbageInternalENS0_9collector6GcTypeENS0_7GcCauseEb+2364)  native: #07 pc 0018e997  /system/lib/libart.so (_ZN3art2gc4Heap22AllocateInternalWithGcEPNS_6ThreadENS0_13AllocatorTypeEbjPjS5_S5_PPNS_6mirror5ClassE+14590)  native: #08 pc 00380f17  /system/lib/libart.so (_ZN3art2gc4Heap16AllocLargeObjectILb0ENS_6mirror16SetLengthVisitorEEEPNS3_6ObjectEPNS_6ThreadEPPNS3_5ClassEjRKT0_+574)  native: #09 pc 003a007d  /system/lib/libart.so (artAllocArrayFromCodeRosAlloc+272)  native: #10 pc 000aaf91  /system/lib/libart.so (art_quick_alloc_array_rosalloc+32)  native: #11 pc 00144861  /system/framework/arm/boot.oat (Java_java_util_Arrays_copyOf___3CI+44)  at java.util.Arrays.copyOf(Arrays.java:3352)  at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130)  at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)  at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:417)  at java.lang.StringBuffer.append(StringBuffer.java:237)  - locked <0x085b5cd2> (a java.lang.StringBuffer)  at java.io.StringWriter.write(StringWriter.java:112)  at com.google.gson.c.c.d(JsonWriter.java:591)  at com.google.gson.c.c.b(JsonWriter.java:419)  at com.google.gson.internal.bind.i$8.a(TypeAdapters.java:422)  at com.google.gson.internal.bind.i$8.write(TypeAdapters.java:406)  at com.google.gson.internal.bind.h.write(TypeAdapterRuntimeTypeWrapper.java:69)  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.a(ReflectiveTypeAdapterFactory.java:125)  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$a.write(ReflectiveTypeAdapterFactory.java:243)  at com.google.gson.internal.bind.e.write(ObjectTypeAdapter.java:107)  at com.google.gson.internal.bind.h.write(TypeAdapterRuntimeTypeWrapper.java:69)  at com.google.gson.internal.bind.MapTypeAdapterFactory$a.a(MapTypeAdapterFactory.java:208)  at com.google.gson.internal.bind.MapTypeAdapterFactory$a.write(MapTypeAdapterFactory.java:145)  at com.f.a.a$j.write(KnownTypeAdapters.java:812)  at com.google.gson.v.toJson(TypeAdapter.java:142)  at com.google.gson.v.toJson(TypeAdapter.java:217)  at com.flipkart.android.h.b.serialize(Serializer.java:305)  at com.flipkart.android.d.f.saveUndownloadedJsResources(FlipkartPreferenceManager.java:375)  at com.flipkart.android.m.c.a(WebResourceManager.java:305)  at com.flipkart.android.m.c.update(WebResourceManager.java:236)  - locked <0x019ab1a3> (a com.flipkart.android.m.c)  at com.flipkart.android.d.b.fetchJsResource(ConfigHelper.java:60)  at com.flipkart.android.register.RegistrationHelper$1.errorReceived(RegistrationHelper.java:113)  at com.flipkart.mapi.client.l.e.onFailure(FkResponseWrapperCallback.java:22)  at com.flipkart.mapi.client.a.a$c$1$1$3.run(FkCallAdapterFactory.java:293)  at android.os.Handler.handleCallback(Handler.java:836)  at android.os.Handler.dispatchMessage(Handler.java:103)  at android.os.Looper.loop(Looper.java:203)  at android.app.ActivityThread.main(ActivityThread.java:6255)  at java.lang.reflect.Method.invoke!(Native method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1064)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:925)