By Alvin Alexander. Last updated: April 8, 2018
As a quick note today, here’s a little Java method that I use to log Android memory use (RAM use) from an Activity or Fragment:
private void logMemoryInfo(Context context, String TAG) { ActivityManager activityManager = (ActivityManager) context.getSystemService(getActivity().ACTIVITY_SERVICE); int memoryClass = activityManager.getMemoryClass(); ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo(); activityManager.getMemoryInfo(memoryInfo); Log.i(TAG, "\n------------ RAM -------------"); Log.i(TAG, "mem class: " + memoryClass); Log.i(TAG, "mem avail: " + memoryInfo.availMem); Log.i(TAG, "low mem: " + memoryInfo.lowMemory); Log.i(TAG, "threshold: " + memoryInfo.threshold); long mb = 1024*1024; Runtime runtime = Runtime.getRuntime(); Log.i(TAG, "Used Memory: " + (runtime.totalMemory() - runtime.freeMemory()) / mb); Log.i(TAG, "Free Memory: " + runtime.freeMemory() / mb); Log.i(TAG, "Total Memory: " + runtime.totalMemory() / mb); Log.i(TAG, "Max Memory: " + runtime.maxMemory() / mb); }
As you can see I log the memory/RAM use in several different ways.
Assuming that you put this code in a class named Utils, to use this method, just call it from your Android code like this, being sure to pass in the logging TAG
from your Android class:
Utils.logMemoryInfo(TAG);
I’ll add more of an interpretation of these RAM values as I understand them better, but for today I just thought I’d share this source code.
Related: The last portion of that method is based on my example of how to show Scala application memory use.