1. 程式人生 > >android 如何抓取系統memory使用狀況

android 如何抓取系統memory使用狀況

當出現系統memory不足導致高優先順序程序被kill等異常時,需要抓取一段時間內的memory使用情況.
一. 在使用Mali GPU平臺上(mt6572 mt6582 mt6592)使用如下指令碼抓取.
具體測試手法如下:
1. 先將手機時間設定成和PC一樣,清除mtklog,開啟mobilelog.
2. 雙擊此指令碼。
3. 出現問題後,停止指令碼(Ctrl+C)將mobilelog和D:\MemLog一起打包

指令碼內容:

@echo off
set logpath1=D:\MemLog\procrank.txt
set logpath2=D:\MemLog\GPU_memory_usage.txt
set logpath4=D:\MemLog\meminfo.txt
set logpath5=D:\MemLog\librank.txt
set logdir= D:\MemLog
del %logdir%
:loop
echo %date% %time%
echo %date% %time% >> %logpath1%
adb shell procrank -u >> %logpath1%
echo %date% %time% >> %logpath2%
adb shell cat /proc/mali/memory_usage >> %logpath2%
echo %date% %time% >> %logpath4%
adb shell cat proc/meminfo >> %logpath4%
echo %date% %time% >> %logpath5%
adb shell librank >> %logpath5%
echo “wait 5s to next catch”
ping -n 5 127.0.0.1>nul

goto loop

二. 在非Mali GPU平臺上使用如下指令碼:

@echo off
set logpath1=D:\MemLog\procrank.txt
set logpath4=D:\MemLog\meminfo.txt
set logdir= D:\MemLog
del %logdir%
:loop
echo %date% %time%
echo %date% %time% >> %logpath1%
adb shell procrank -u >> %logpath1%
echo %date% %time% >> %logpath4%
adb shell cat proc/meminfo >> %logpath4%
echo “wait 5s to next catch”
ping -n 5 127.0.0.1>nul

goto loop

三. 當確認是某個AP程序佔用memory多,需要再監控對應程序時.
在Mali GPU平臺使用如下指令碼。
雙擊後輸入對應程序的PID後開始抓取

@echo “please input the target pid :”
@echo off
adb shell ps
set processid=
set /p processid=Please Input process id to catch:
@echo off
set logpath1=D:\MemLog\procrank.txt
set logpath2=D:\MemLog\GPU_memory_usage.txt
set logpath3=D:\MemLog\Mem-%processid%.txt
set logpath4=D:\MemLog\meminfo.txt
set logpath5=D:\MemLog\librank.txt
set logdir= D:\MemLog
del %logdir%
:loop
echo %date% %time%
echo %date% %time% >> %logpath1%
adb shell procrank -u >> %logpath1%
echo %date% %time% >> %logpath2%
adb shell cat /proc/mali/memory_usage >> %logpath2%
echo %date% %time% >> %logpath3%
adb shell dumpsys meminfo %processid% >> %logpath3%
echo %date% %time% >> %logpath4%
adb shell cat proc/meminfo >> %logpath4%
echo %date% %time% >> %logpath5%
adb shell librank >> %logpath5%
echo “wait 5s to next catch”
ping -n 5 127.0.0.1>nul

goto loop

四. 當確認是某個AP程序佔用memory多時,需要再監控對應程序時.
在非Mali GPU平臺使用如下指令碼。
雙擊後輸入對應程序的PID後開始抓取

@echo “please input the target pid :”
@echo off
adb shell ps
set processid=
set /p processid=Please Input process id to catch:
@echo off
set logpath1=D:\MemLog\procrank.txt
set logpath3=D:\MemLog\Mem-%processid%.txt
set logpath4=D:\MemLog\meminfo.txt
set logdir= D:\MemLog
del %logdir%
:loop
echo %date% %time%
echo %date% %time% >> %logpath1%
adb shell procrank -u >> %logpath1%
echo %date% %time% >> %logpath3%
adb shell dumpsys meminfo %processid% >> %logpath3%
echo %date% %time% >> %logpath4%
adb shell cat proc/meminfo >> %logpath4%
echo “wait 5s to next catch”
ping -n 5 127.0.0.1>nul

goto loop