Created
July 15, 2016 09:48
-
-
Save beeender/730b058e3e44985444e4a8402bfb7335 to your computer and use it in GitHub Desktop.
Script to show the average/peak memory usage for Android app.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/zsh | |
OUTPUT="" | |
PROCESS_EXISTS=false | |
PROCESS_STARTED=false | |
COUNT=0 | |
JAVA_HEAP_TOTAL=0 | |
NATIVE_HEAP_TTAL=0 | |
JAVA_HEAP_AVG=0 | |
NATIVE_HEAP_AVG=0 | |
JAVA_HEAP_PEAK=0 | |
NATIVE_HEAP_PEAK=0 | |
check_process_exists() { | |
echo $OUTPUT | grep "MEMINFO in pid" > /dev/null | |
if [[ $? -eq 0 ]] ; then | |
PROCESS_EXISTS=true | |
else | |
PROCESS_EXISTS=false | |
fi | |
} | |
do_statistics() { | |
((COUNT+=1)) | |
# Check the dumpsys version | |
echo $OUTPUT | grep "App Summary" > /dev/null | |
if [[ $? -eq 0 ]] ; then | |
old_dumpsys=false | |
else | |
old_dumpsys=true | |
fi | |
#echo $OUTPUT | |
if [[ $old_dumpsys = true ]] ; then | |
java_heap="$(echo "$OUTPUT" | grep "Dalvik" | awk '{print $6}' | tr -d '\r')" | |
else | |
java_heap="$(echo "$OUTPUT" | grep "Dalvik Heap[^:]" | awk '{print $8}' | tr -d '\r')" | |
fi | |
((JAVA_HEAP_TOTAL+=java_heap)) | |
((JAVA_HEAP_AVG=JAVA_HEAP_TOTAL/COUNT)) | |
if [[ $java_heap -gt $JAVA_HEAP_PEAK ]] ; then | |
JAVA_HEAP_PEAK=$java_heap | |
fi | |
if [[ $old_dumpsys = true ]] ; then | |
native_heap="$(echo "$OUTPUT" | grep "Native" | awk '{print $6}' | tr -d '\r')" | |
else | |
native_heap="$(echo "$OUTPUT" | grep "Native Heap[^:]" | awk '{print $8}' | tr -d '\r' | tr -d '\n')" | |
fi | |
((NATIVE_HEAP_TOTAL+=native_heap)) | |
((NATIVE_HEAP_AVG=NATIVE_HEAP_TOTAL/COUNT)) | |
if [[ $native_heap -gt $NATIVE_HEAP_PEAK ]] ; then | |
NATIVE_HEAP_PEAK=$native_heap | |
fi | |
echo "Java Heap: "$java_heap"KB Java Heap Average: "$JAVA_HEAP_AVG"KB Java Heap Peak: "$JAVA_HEAP_PEAK"KB" | |
echo "Native Heap: "$native_heap"KB Native Heap Average: "$NATIVE_HEAP_AVG"KB Native Heap Peak: "$NATIVE_HEAP_PEAK"KB" | |
} | |
while true ; do | |
OUTPUT="$(adb shell dumpsys meminfo $1)" | |
check_process_exists | |
if [[ $PROCESS_EXISTS = false && $PROCESS_STARTED = true ]] ; then | |
echo "---- Results ----" | |
echo "Java Heap Average: "$JAVA_HEAP_AVG"KB Java Heap Peak: "$JAVA_HEAP_PEAK"KB" | |
echo "Native Heap Average: "$NATIVE_HEAP_AVG"KB Native Heap Peak: "$NATIVE_HEAP_PEAK"KB" | |
exit 0 | |
fi | |
if [[ $PROCESS_EXISTS = true && $PROCESS_STARTED = false ]] ; then | |
PROCESS_STARTED=true | |
fi | |
if [[ $PROCESS_EXISTS = true ]] ; then | |
do_statistics | |
fi | |
sleep 0.1 | |
done | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment