2015-07-22 1 views
0

Я хочу, чтобы обнаружить памяти и CPUпотребления из конкретного приложения в андроид (программно), может ли один помочь мне с этим. Я пробовал метод TOP, но мне нужна альтернатива.Обнаружение памяти и процессор потребления в particluar приложения

Любая помощь будет оценена, спасибо :)

ответ

0

Если вы тусклый отслеживать использование памяти в приложении, то есть ActivityManager.getMemoryInfo() API.

Использование Cpu можно отслеживать с использованием CpuStatsCollector API.

Для получения более подробной информации об использовании памяти, вне вашего приложения, вы можете использовать adb shell dumpsys meminfo <package_name|pid> [-d] для получения более конкретной статистики использования памяти. Например, есть команда для com.google.android.apps.maps процесса:

adb shell dumpsys meminfo com.google.android.apps.maps -d

Что дает вам следующий вывод:

** MEMINFO in pid 18227 [com.google.android.apps.maps] ** 
       Pss Private Private Swapped  Heap  Heap  Heap 
      Total Dirty Clean Dirty  Size Alloc  Free 
      ------ ------ ------ ------ ------ ------ ------ 
Native Heap 10468 10408  0  0 20480 14462  6017 
Dalvik Heap 34340 33816  0  0 62436 53883  8553 
Dalvik Other  972  972  0  0 
    Stack  1144  1144  0  0 
    Gfx dev 35300 35300  0  0 
Other dev  5  0  4  0 
.so mmap  1943  504  188  0 
.apk mmap  598  0  136  0 
.ttf mmap  134  0  68  0 
.dex mmap  3908  0  3904  0 
.oat mmap  1344  0  56  0 
.art mmap  2037  1784  28  0 
Other mmap  30  4  0  0 
EGL mtrack 73072 73072  0  0 
GL mtrack 51044 51044  0  0 
    Unknown  185  184  0  0 
    TOTAL 216524 208232  4384  0 82916 68345 14570 

(выход обрезается) о нем here

Трассировка памяти использование в современных операционных системах - очень сложная задача. См. Это question для получения дополнительной информации.

+0

Могу ли я использовать его через приложение, которое является программным –

+0

Пожалуйста, смотрите обновленный ответ. – plastique

+0

CpuStatsCollector API не является общедоступным API, поэтому мы не можем использовать это, пожалуйста, проверьте перед отправкой ответа – Amritesh

0

Чтобы получить ProcessID:

int pid = android.os.Process.myPid(); 

Для использования ЦП:

public String getCPUUsage(int pid) { 
    Process p; 
    try { 
    String[] cmd = { 
     "sh", 
     "-c", 
     "top -m 1000 -d 1 -n 1 | grep \""+pid+"\" "}; 
    p = Runtime.getRuntime().exec(cmd); 
    String line = reader.readLine(); 
    // line contains the process info 
} 
Смежные вопросы