Как получить фактическое использование ОЗУ приложением в Android?

Проще говоря, как я могу получить объем памяти (в МБ), который в настоящее время использует мое приложение для Android? Это нужно сделать на Java, чтобы я мог отобразить эту информацию пользователю.

Я просмотрел другие сообщения stackoverflow, но ни один из них не дает простого или точного ответа на эту проблему.


person getContext    schedule 28.09.2016    source источник
comment
stackoverflow.com/questions/2298208/   -  person Zaartha    schedule 28.09.2016
comment
Попробуйте использовать ActivityManager: stackoverflow.com/questions/3170691/   -  person bigghe    schedule 28.09.2016
comment
Пожалуйста, определите с технической точки зрения, что означает фактическое использование ОЗУ. Цитируя одного из основных инженеров Android: обратите внимание, что использование памяти в современных операционных системах, таких как Linux, является чрезвычайно сложным и трудным для понимания область. На самом деле шансы на то, что вы на самом деле правильно интерпретируете полученные цифры, крайне малы.   -  person CommonsWare    schedule 28.09.2016
comment
ActivityManager и описанный выше подход дают только общую память и доступную память. Они не указали, сколько памяти потребляет само приложение из оперативной памяти.   -  person getContext    schedule 02.10.2016


Ответы (3)


adb shell dumpsys meminfo packagename

Попробуйте выполнить эту команду с помощью Java.

person user2539662    schedule 15.03.2017

Вы можете использовать ActivityManager для этой цели.

Ответ на этот вопрос содержится в этой программе ">опубликовать.

person djointster    schedule 28.09.2016
comment
ActivityManager дает общую память и доступную память. Это не то, что я ищу. Я ищу, сколько памяти само приложение использует в определенное время. - person getContext; 02.10.2016

Попробуйте использовать этот код, если производительность не критична:

Debug.MemoryInfo memInfo = new Debug.MemoryInfo();
Debug.getMemoryInfo(memInfo);
long res = memInfo.getTotalPrivateDirty();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) 
    res += memInfo.getTotalPrivateClean(); 

return res * 1024L;

Если производительность критична, отметьте этот ответ

person Dmitry Shesterkin    schedule 14.08.2017