Skip to content

Instantly share code, notes, and snippets.

@beeender
Created July 15, 2016 09:48
Show Gist options
  • Save beeender/730b058e3e44985444e4a8402bfb7335 to your computer and use it in GitHub Desktop.
Save beeender/730b058e3e44985444e4a8402bfb7335 to your computer and use it in GitHub Desktop.
Script to show the average/peak memory usage for Android app.
#!/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