Android記憶體洩露利器(RSS記憶體統計篇)

2021-08-26 12:46:02 字數 2586 閱讀 9240

前言

rss(resident set size)表示實際使用物理記憶體(包含共享庫占用的記憶體)。

因為它包含了共享記憶體,所以他的意義不及pss。所以現在檢視記憶體使用情況一般參照pss。

因此現在一般不使用getprocessstate.bat,而是使用getmemorystate.bat

android記憶體洩露利器(記憶體統計篇)

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

) else (

>>!statfile! set/p=%%i )

)set /a cnt=!cnt!+1 )

)echo success!

endlocal

執行一次

getprocessstate.bat來從手機提取程序的rss,

輸出到乙個以程序名命名的文字檔案,以便在excel中生產圖表檔案。

注意:需要把bat庫genserial.bat,getsubstr.bat放在

子目錄lib中。

getsubstr

》,《genserial

android記憶體洩露利器(hprof篇)

》,《android記憶體洩露利器(記憶體統計篇)

》, 《

android記憶體洩露利器(全自動篇)

Android記憶體洩露利器(hprof篇)

我們可以使用 生成 hprof 然後使用批處理hprof檔案,然後用mat進行對多個 hprof檔案 比較分析。一 批處理配置檔案 批處理配置檔案config.bat如下 rem the following var is for getprocessstate.bat set rawdatadir ...

Android記憶體洩露

android應用記憶體洩漏的的原因有以下幾個 1查詢資料庫後沒有關閉游標cursor 2 構造adapter時,沒有使用 convertview 重用 3 bitmap物件不在使用時呼叫recycle 釋放記憶體 4 物件被生命週期長的物件引用,如activity被靜態集合引用導致activity...

android 記憶體洩露

記憶體洩露情況 1 使用單例導致記憶體洩露 public class singleton public static singleton getsingleton context context return singleton 原因 靜態的單例使它的生命週期與應用的生命週期一樣長,context一...