检测特定应用程序的内存和CPU消耗

时间:2015-07-22 13:29:45

标签: java android memory cpu-usage

我想检测 android <中特定应用内存 CPU 消费 / strong>(以编程方式),任何人都可以帮助我。我尝试过TOP方法,但我想要一个替代方法。

感谢任何帮助,谢谢:)

2 个答案:

答案 0 :(得分:0)

如果您想在应用中追踪内存使用情况,那么就会有ActivityManager.getMemoryInfo() API。

可以使用CpuStatsCollector API跟踪Cpu使用情况。

有关内容使用情况的更多信息,在应用程序外部,您可以使用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

答案 1 :(得分:0)

获取你的processid:

class Child;

class Parent
{
public:
    Parent(Child& ch) : child(ch) {}
private:
    Child& child;
};

获取CPU使用率:

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