`
kanwoerzi
  • 浏览: 1640431 次
文章分类
社区版块
存档分类
最新评论

Android内存泄露利器(RSS内存统计篇)

 
阅读更多
前言
RSS(Resident Set Size)表示实际使用物理内存(包含共享库占用的内存)。
因为它包含了共享内存,所以他的意义不及PSS。所以现在查看内存使用情况一般参照PSS。
因此现在一般不使用getProcessState.bat,而是使用getMemoryState.bat
关于getMemoryState.bat的更多内容请参照Android内存泄露利器(内存统计篇)
关于RSS和PSS的更多内容请参考Memory: VSS/RSS/PSS/USS
提取进程的RSS
文件:getProcessState.bat
@echo off
call config.bat
set processNameCol=9
set RSSCol=5
Setlocal enabledelayedexpansion
set path=%path%;%cd%\lib
set /a processNo=0
for %%i in (%processName%) do (
set /a processNo+=1
)
set /a cnt=0
set str=
if "%processShortName%"=="" (
set /a cnt=0
for %%i in (%processName%) do (
set str=%%i
set str=!str:.= !
call getSubStr "!str!" -1
set result=!getSubStr~result!
if !cnt!EQU0 (
set processShortName=!result!
) else (
set processShortName=!processShortName!;!result!
)
set /a cnt+=1
)
) else (
set /a cnt=0
for %%i in (%processShortName%) do (
set /a cnt=!cnt!+1
)
ifnot!cnt!EQU%processNo% (
echo the number of process Name is %processNo%
echo the number of process Short Name is !cnt!
echo they should be equal.Please check again!
exit 0
)
)
if not exist %rawDatadir% (
md %rawDatadir%
)
if not exist %outRoot% (
md %outRoot%
)
call genSerial
set serial=!genSerial~result!
set psFile=%rawDatadir%\ps%serial%.txt
adb shell "ps -x" >%psFile%
adb shell exit
set /a cnt=0
FOR /F "skip=1 tokens=%RSSCol%,%processNameCol%" %%i in (%psFile%) do (
set /a cnt=0
for %%a in (%processName%) do (
if "%%a"=="%%j" (
call getSubStr "%processShortName%" !cnt!
set result=!getSubStr~result!
set statFile=%outRoot%\%statFilePrefix%_!result!.txt
if exist !statFile! (
>>!statFile! set/p=,%%i<nul
) else (
>>!statFile! set/p=%%i<nul
)
)
set /a cnt=!cnt!+1
)
)
echo success!
endlocal
执行一次getProcessState.bat来从手机提取进程的RSS,输出到一个以进程名命名的文本文件,以便在excel中生产图表文件
注意需要把bat库genSerial.bat,getSubStr.bat放在子目录lib中。
关于它们的更多内容请参考《getSubStrgenSerial
关于更多的Android内存泄露利器请阅读《Android内存泄露利器(Hprof篇)》,《Android内存泄露利器(内存统计篇)》,
<wbr style="line-height:25px"></wbr>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics