Android开发卡死

现象描述:屏幕卡死,无法操作 版本:5.1.用于仪器检测操作 内容描述:新公司接收之前的项目,用公司的板子开发的,加入了anr-watchdog。死机后重启,导出了traces文件。想知道是什么原因,然后分析逻辑过程,不胜感激。 错误相关:{"@type":"com.github.anrwatchdog.ANRError","cause":{"@type":"com.github.anrwatchdog.ANRError$$$_Thread","cause":{"@type":"com.github.anrwatchdog.ANRError$$$_Thread","cause":{"@type":"com.github.anrwatchdog.ANRError$$$_Thread","cause":{"@type":"com.github.anrwatchdog.ANRError$$$_Thread","cause":{"@type":"com.github.anrwatchdog.ANRError$$$_Thread","cause":{"@type":"com.github.anrwatchdog.ANRError$$$_Thread","cause":{"@type":"com.github.anrwatchdog.ANRError$$$_Thread","localizedMessage":"|ANR-WatchDog| (state = RUNNABLE)","message":"|ANR-WatchDog| (state = RUNNABLE)","stackTrace":[{"className":"dalvik.system.VMStack","fileName":"VMStack.java","lineNumber":-2,"methodName":"getThreadStackTrace","nativeMethod":true},{"className":"java.lang.Thread","fileName":"Thread.java","lineNumber":580,"methodName":"getStackTrace","nativeMethod":false},{"className":"java.lang.Thread","fileName":"Thread.java","lineNumber":522,"methodName":"getAllStackTraces","nativeMethod":false},{"className":"com.github.anrwatchdog.ANRError","fileName":"ANRError.java","lineNumber":77,"methodName":"New","nativeMethod":false},{"className":"com.github.anrwatchdog.ANRWatchDog","fileName":"ANRWatchDog.java","lineNumber":273,"methodName":"run","nativeMethod":false}],"suppressed":[]},"localizedMessage":"ReferenceQueueDaemon (state = WAITING)","message":"ReferenceQueueDaemon (state = WAITING)","stackTrace":[{"className":"java.lang.Object","fileName":"Object.java","lineNumber":-2,"methodName":"wait","nativeMethod":true},{"className":"java.lang.Daemons$ReferenceQueueDaemon","fileName":"Daemons.java","lineNumber":134,"methodName":"run","nativeMethod":false},{"className":"java.lang.Thread","fileName":"Thread.java","lineNumber":818,"methodName":"run","nativeMethod":false}],"suppressed":[]},"localizedMessage":"HeapTrimmerDaemon (state = WAITING)","message":"HeapTrimmerDaemon (state = WAITING)","stackTrace":[{"className":"java.lang.Object","fileName":"Object.java","lineNumber":-2,"methodName":"wait","nativeMethod":true},{"className":"java.lang.Daemons$HeapTrimmerDaemon","fileName":"Daemons.java","lineNumber":311,"methodName":"run","nativeMethod":false},{"className":"java.lang.Thread","fileName":"Thread.java","lineNumber":818,"methodName":"run","nativeMethod":false}],"suppressed":[]},"localizedMessage":"GCDaemon (state = WAITING)","message":"GCDaemon (state = WAITING)","stackTrace":[{"className":"java.lang.Object","fileName":"Object.java","lineNumber":-2,"methodName":"wait","nativeMethod":true},{"className":"java.lang.Daemons$GCDaemon","fileName":"Daemons.java","lineNumber":344,"methodName":"run","nativeMethod":false},{"className":"java.lang.Thread","fileName":"Thread.java","lineNumber":818,"methodName":"run","nativeMethod":false}],"suppressed":[]},"localizedMessage":"FinalizerWatchdogDaemon (state = WAITING)","message":"FinalizerWatchdogDaemon (state = WAITING)","stackTrace":[{"className":"java.lang.Object","fileName":"Object.java","lineNumber":-2,"methodName":"wait","nativeMethod":true},{"className":"java.lang.Daemons$FinalizerWatchdogDaemon","fileName":"Daemons.java","lineNumber":240,"methodName":"waitForObject","nativeMethod":false},{"className":"java.lang.Daemons$FinalizerWatchdogDaemon","fileName":"Daemons.java","lineNumber":212,"methodName":"run","nativeMethod":false},{"className":"java.lang.Thread","fileName":"Thread.java","lineNumber":818,"methodName":"run","nativeMethod":false}],"suppressed":[]},"localizedMessage":"FinalizerDaemon (state = WAITING)","message":"FinalizerDaemon (state = WAITING)","stackTrace":[{"className":"java.lang.Object","fileName":"Object.java","lineNumber":-2,"methodName":"wait","nativeMethod":true},{"className":"java.lang.Object","fileName":"Object.java","lineNumber":422,"methodName":"wait","nativeMethod":false},{"className":"java.lang.ref.ReferenceQueue","fileName":"ReferenceQueue.java","lineNumber":101,"methodName":"remove","nativeMethod":false},{"className":"java.lang.ref.ReferenceQueue","fileName":"ReferenceQueue.java","lineNumber":72,"methodName":"remove","nativeMethod":false},{"className":"java.lang.Daemons$FinalizerDaemon","fileName":"Daemons.java","lineNumber":174,"methodName":"run","nativeMethod":false},{"className":"java.lang.Thread","fileName":"Thread.java","lineNumber":818,"methodName":"run","nativeMethod":false}],"suppressed":[]},"localizedMessage":"main (state = NEW)","message":"main (state = NEW)","stackTrace":[],"suppressed":[]},"duration":5000,"localizedMessage":"Application Not Responding for at least 5000 ms.","message":"Application Not Responding for at least 5000 ms.","stackTrace":[],"suppressed":[]}

补充下。程序是主应用,然后长时间待机,在service启动线程通过串口和下位机每5秒发送接收数据。大概过几个小时就会死机

DALVIK THREADS (71): "main" prio=5 tid=1 Native | group="main" sCount=1 dsCount=0 obj=0x73c1d000 self=0xb483d000 | sysTid=3609 nice=-2 cgrp=default sched=0/0 handle=0xb6f1fbec | state=S schedstat=( 2807493409 132511631 909 ) utm=212 stm=68 core=3 HZ=100 | stack=0xbe622000-0xbe624000 stackSize=8MB | held mutexes= native: #00 pc 0003ad10 /system/lib/libc.so (__ioctl+8) native: #01 pc 000526e9 /system/lib/libc.so (ioctl+14) native: #02 pc 0001f38f /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+138) native: #03 pc 0001f99b /system/lib/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+42) native: #04 pc 0001fb3d /system/lib/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+124) native: #05 pc 0001ad23 /system/lib/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+30) native: #06 pc 00036c01 /system/lib/libgui.so (???) native: #07 pc 0003bc7b /system/lib/libgui.so (android::SurfaceComposerClient::createSurface(android::String8 const&, unsigned int, unsigned int, int, unsigned int)+54) native: #08 pc 0007775d /system/lib/libandroid_runtime.so (???) native: #09 pc 00ebfe33 /data/dalvik-cache/arm/system@framework@boot.oat (Java_android_view_SurfaceControl_nativeCreate__Landroid_view_SurfaceSession_2Ljava_lang_String_2IIII+158) at android.view.SurfaceControl.nativeCreate(Native method) at android.view.SurfaceControl.(SurfaceControl.java:287) at com.android.server.wm.WindowStateAnimator.createSurfaceLocked(WindowStateAnimator.java:866) at com.android.server.wm.WindowManagerService.relayoutWindow(WindowManagerService.java:3231)

  • locked <0x1df17169> (a java.util.HashMap) at com.android.server.wm.Session.relayout(Session.java:197) at android.view.ViewRootImpl.relayoutWindow(ViewRootImpl.java:5363) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1557) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5971) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) at android.view.Choreographer.doCallbacks(Choreographer.java:580) at android.view.Choreographer.doFrame(Choreographer.java:550) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at com.android.server.SystemServer.run(SystemServer.java:279) at com.android.server.SystemServer.main(SystemServer.java:180) at java.lang.reflect.Method.invoke!(Native method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:963) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:758) 这是导出的traces的文件里的,信息太多,只能复制一部分

这报错看的头晕

报错看着头晕,我猜哈,根据描述是在运行一段时间后死机,有可能是因为内存不足,程序运行过程有没有在不断申请新的内存空间而没有释放?