对于Android设备在使用过程中导致系统卡顿、崩溃、重启问题,产生的原因比较多,有软件异常引起,也有硬件异常引起。这里讲下软件内存泄漏引起系统异常的分析方法。
Android系统中集成了dumpsys工具比较有用。当系统异常时,可以在adb终端输入命令:
adb shell dumpsys meminfo
如下所示:
G:\xx_files\tools\adb-fastboot-v2>adb shell dumpsys meminfo
Applications Memory Usage (in Kilobytes):
Uptime: 1879405 Realtime: 1879405
Total RSS by process:
248,711K: system (pid 1067)
245,803K: com.google.android.googlequicksearchbox:search (pid 2239)
236,488K: com.google.android.gms.persistent (pid 1863)
185,133K: com.android.systemui (pid 1254)
173,532K: com.google.android.inputmethod.latin (pid 2565)
166,769K: com.android.launcher3 (pid 1638 / activities)
165,640K: com.google.android.gms (pid 5689)
161,521K: com.google.android.gms.unstable (pid 2694)
155,464K: com.google.android.googlequicksearchbox:interactor (pid 1964)
140,479K: com.idata.iscanplus (pid 2905)
140,400K: com.google.android.gms.ui (pid 5298)
138,580K: com.google.android.youtube (pid 4784)
136,976K: com.debug.loggerui (pid 3058)
124,716K: com.android.vending (pid 2101)
124,120K: com.google.android.apps.tachyon (pid 3930)
119,696K: com.google.android.dialer (pid 2977)
119,182K: com.example.oemscandemo (pid 5372 / activities)
115,756K: com.android.phone (pid 1512)
113,648K: com.google.android.tts (pid 4637)
112,100K: com.android.vending:background (pid 3083)
111,544K: com.google.android.gm (pid 4370)
109,728K: zygote64 (pid 448)
107,976K: com.google.android.ims (pid 3726)
104,644K: com.google.android.ext.services (pid 1554)
100,452K: com.google.android.setupwizard (pid 4574)
87,480K: com.mediatek.camera (pid 4958)
86,048K: com.android.providers.media.module (pid 1987)
......
系统的内存占用情况可以一目了然。如果要查看某个进程的内存占用情况,可以使用:
adb shell dumpsys meminfo 进程号
如果 需要系统的服务列表可以使用:
adb shell service list
如果想查看某个服务的内存占用情况,可以使用:
adb shell dumpsys 服务名
如: adb shell dumpsys battery/power/activity/package等等
当然还有其他办法分析,这里后续再完善。。。