关于JNI GC 的一些讨论
包含JNI代码(pthread使用ffmpeg解码音频)的程序在小米手机上测试出现诡异的ANR问题,100%复现。其他测试机以及模拟器都无法复现。
?
HeapWorker线程的CPU占用率很高。
?
12-26 08:43:31.882: ERROR/ActivityManager(215): ANR in cn.yo2.aquarium.mmsplayer (cn.yo2.aquarium.mmsplayer/.MainTest1)12-26 08:43:31.882: ERROR/ActivityManager(215): Reason: keyDispatchingTimedOut12-26 08:43:31.882: ERROR/ActivityManager(215): Load: 5.2 / 7.29 / 8.5312-26 08:43:31.882: ERROR/ActivityManager(215): CPU usage from 101192988ms to 101183649ms ago:12-26 08:43:31.882: ERROR/ActivityManager(215): 61% TOTAL: 17% user + 12% kernel + 30% iowait + 0.2% softirq12-26 08:43:31.882: ERROR/ActivityManager(215): CPU usage from 817ms to 1380ms later:12-26 08:43:31.882: ERROR/ActivityManager(215): 92% 13830/cn.yo2.aquarium.mmsplayer: 92% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 92% 13831/HeapWorker: 92% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 48% 215/system_server: 22% user + 25% kernel / faults: 16 minor12-26 08:43:31.882: ERROR/ActivityManager(215): 9.2% 265/InputDispatcher: 3.7% user + 5.5% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 9.2% 589/Binder Thread #: 3.7% user + 5.5% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 5.5% 9799/Binder Thread #: 1.8% user + 3.7% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 3.7% 222/Binder Thread #: 0% user + 3.7% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 3.7% 488/Binder Thread #: 3.7% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 3.7% 9800/Binder Thread #: 3.7% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 1.8% 223/SurfaceFlinger: 1.8% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 1.8% 481/Binder Thread #: 0% user + 1.8% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 1.8% 776/Binder Thread #: 1.8% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 1.8% 4848/Binder Thread #: 1.8% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 1.8% 10816/Binder Thread #: 0% user + 1.8% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 1.8% 10817/Binder Thread #: 1.8% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 1.8% 11273/Binder Thread #: 1.8% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 1.8% 19057/Binder Thread #: 0% user + 1.8% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 1.8% 25952/Binder Thread #: 0% user + 1.8% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 5.2% 14857/com.qihoo360.mobilesafe: 5.2% user + 0% kernel / faults: 1 minor12-26 08:43:31.882: ERROR/ActivityManager(215): 5.2% 14859/GC: 5.2% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 1.7% 14897/ProcessManagerS: 1.7% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 0.9% 73/irq/379-lis3dh: 0% user + 0.9% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 0.9% 282/com.android.systemui: 0.9% user + 0% kernel12-26 08:43:31.882: ERROR/ActivityManager(215): 76% TOTAL: 63% user + 13% kernelIs native code interrupted by GC?What is "Heap Worker" thread and what does it do?Dead lock condition, GC Thread and HeapWorkerThreadFW: HeapWorker taking 80%-95% of cpuAndroid Log Analysis
?