I have used /proc/meminfo and parsed command response.however it result shows that :
MemTotal: 94348 kB MemFree: 5784 kB
means. it shows there is only 5MB free memory. Is it possible with android mobile? There is only 5-6 application installed on my mobile and no other task is running. but still this command shows there is very little free memory.
Can somebody clarify this? or is there any other way of getting memory usage in android?
ベストアンサー1
CAUTION: This answer measures memory usage/available of the DEVICE. This is NOT what is available to your app. To measure what your APP is doing, and is PERMITTED to do, Use android developer's answer.
Android docs - ActivityManager.MemoryInfo
parse /proc/meminfo command. You can find reference code here: Get Memory Usage in Android
use below code and get current RAM:
MemoryInfo mi = new MemoryInfo(); ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); activityManager.getMemoryInfo(mi); double availableMegs = mi.availMem / 0x100000L; //Percentage can be calculated for API 16+ double percentAvail = mi.availMem / (double)mi.totalMem * 100.0;
Explanation of the number 0x100000L
1024 bytes == 1 Kibibyte
1024 Kibibyte == 1 Mebibyte
1024 * 1024 == 1048576
1048576 == 0x100000
It's quite obvious that the number is used to convert from bytes to mebibyte
P.S: we need to calculate total memory only once. so call point 1 only once in your code and then after, you can call code of point 2 repetitively.