做下總結,梳理下,雖然總共才碰到 不到 10個相關問題(而且有兩個都沒有解掉)
常用方式:
top -m 5( top-t -m 5 -n 2) 看下前5個進程的使用情況
adb shell cat proc/meminfo 看下大致內存使用情況 (free+buffers+cached)
proc/meminfo 機器的內存使用信息
/proc/pid/maps pid爲進程號,顯示當前進程所佔用的虛擬地址。
/proc/pid/statm 進程所佔用的內存
df 查看 存儲空間使用情況
ps -t |grep system_server (或 surfaceflinger, service manager, media server,zygote) ( 倒數第二個是不是 s) 異常情況有如’D’, ‘T’, ‘Z’ , ‘R’等
或者執行以下腳本快速 保存log
adb shell ps -t> yang/ps.txt
adb shell top -t -m 5 -n 2 > yang/top.txt
adb shell service list > yang/serviceList.txt
adb shell cat /proc/meminfo >yang/meminfo
adb shell cat /proc/buddyinfo >yang/buddyinfo
adb shell procrank > yang/procrank.txt
adb shell cat proc/sched_debug >yang/sched_debug.txt
adb shell cat proc/interrupts >yang/interrupts.txt
adb shell dumpstate > yang/dumpstate.txt
adb shell bugreport > yang/bugreport.txt
@echo "finish."
pause
遇到的問題有好幾個都是 上層fatal 導致,沒得說,有一個 system_server 死鎖,有一個anr,還有個lib庫的問題 一直無法解決(雖然打印了對應的出錯函數 libart裏面的錯誤,只出現了一次)