ANR 笔记

本文详细探讨了Android应用程序无响应(ANR)的发生原因,包括进程的三种阻塞状态:Blocked、Native和Waiting。特别指出主线程可能由于在dex方法中卡死而导致ANR问题。了解这些基础知识对于优化应用性能和提升用户体验至关重要。
摘要由CSDN通过智能技术生成



发生ANR进程的call stack:Blocked、Native、Waiting


Blocker类型:

主线程卡死在dex方法中


"main" prio=5 tid=1 Blocked
  | group="main" sCount=1 dsCount=0 obj=0x767023a0 self=0x76e1896a00
  | sysTid=13942 nice=0 cgrp=default sched=0/0 handle=0x76e5dfda98
  | state=S schedstat=( 563799321 432986759 908 ) utm=40 stm=16 core=2 HZ=100
  | stack=0x7fd752b000-0x7fd752d000 stackSize=8MB
  | held mutexes=
  at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:40)
  - waiting to lock <0x0ddea182> (a android.util.ArrayMap) held by thread 24
  at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:525)
  "Thread-12" prio=10 tid=24 Native
  | group="main" sCount=1 dsCount=0 obj=0x12e45160 self=0x76d58c3e00
  | sysTid=14000 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0x76c6710450
  | state=R schedstat=( 33192160 6156940547 327 ) utm=0 stm=3 core=3 HZ=100
  | stack=0x76c660e000-0x76c6610000 stackSize=1037KB
  | held mutexes= "OatFile manager lock"(shared held)
  at dalvik.system.DexFile.openDexFileNative(Native method)
  at dalvik.system.DexFile.openDexFile(DexFile.java:373)
  at dalvik.system.DexFile.<init>(DexFile.java:113)
  at dalvik.system.DexFile.<init>(DexFile.java:78)
  at dalvik.system.DexPathList.loadDexFile(DexPathList.java:359)
  at dalvik.system.DexPathList.makeElements(DexPathList.java:323)
  at dalvik.system.DexPathList.makeDexElements(DexPathList.java:263)
  at dalvik.system.DexPathList.<init>(DexPathList.java:126)
  at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:48)

Native类型:

"main" prio=5 tid=1 Native
  | group="main" sCount=1 dsCount=0 obj=0x75a905c8 self=0xe9185400
  | sysTid=28683 nice=0 cgrp=default sched=0/0 handle=0xec64a534
  | state=D schedstat=( 192877927 154411301 311 ) utm=9 stm=10 core=0 HZ=100
  | stack=0xff634000-0xff636000 stackSize=8MB
  | held mutexes=
  at java.io.FileDescriptor.sync(Native method)
  at android.os.FileUtils.sync(FileUtils.java:181)
  at android.app.SharedPreferencesImpl.writeToFile(SharedPreferencesImpl.java:601)
  at android.app.SharedPreferencesImpl.-wrap2(SharedPreferencesImpl.java:-1)
  at android.app.SharedPreferencesImpl$2.run(SharedPreferencesImpl.java:515)
  - locked <0x09c69197> (a java.lang.Object)
  at android.app.SharedPreferencesImpl.enqueueDiskWrite(SharedPreferencesImpl.java:536)
  at android.app.SharedPreferencesImpl.-wrap0(SharedPreferencesImpl.java:-1)
  at android.app.SharedPreferencesImpl$EditorImpl.commit(SharedPreferencesImpl.java:458)
  at com.gameloft.android.ANMP.GloftA8HM.GLUtils.SUtils.setPreference(SUtils.java:612)
  at com.gameloft.android.ANMP.GloftA8HM.GLUtils.SUtils.setPreference(SUtils.java:587)
  at com.gameloft.android.ANMP.GloftA8HM.installer.GameInstaller.onCreate(GameInstaller.java:3806)
  at a
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值