一、cpu:
1、top命令
Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [-t ] [ -h ]
-m num Maximum number of processes to display. // 最多显示多少个进程
-n num Updates to show before exiting. // 刷新次数
-d num Seconds to wait between updates. // 刷新间隔时间(默认5秒)
-s col Column to sort by (cpu,vss,rss,thr). // 按哪列排序
-t Show threads instead of processes. // 显示线程信息而不是进程
-h Display this help screen. // 显示帮助文档
2、dumpsys cupinfo
3、android自带的DDMS可视化工具
4、通过linux系统/proc/stat和/proc/<pid>/stat文件进行占用率的计算
https://www.jianshu.com/p/6bf564f7cdf0
5、IDE(Android Studio)的Monitor中实时查看
二、内存:
内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
PSS Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
1、dumpsys meminfo pid
Applications Memory Usage (kB):
Uptime: 169758543 Realtime: 716790059
** MEMINFO in pid 8704 [com.test.app] **
Pss Private Private Swapped Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 4836 4744 0 4 9984 8698 1285
Dalvik Heap 6453 6428 0 984 13771 7328 6443
Dalvik Other 1101 1100 0 12
Stack 320 320 0 0
Other dev 5 0 4 0
.so mmap 673 108 68 4840
.apk mmap 235 0 64 0
.ttf mmap 8 0 0 0
.dex mmap 5262 8 3576 4
.oat mmap 1736 0 388 4
.art mmap 1334 1044 20 76
Other mmap 162 8 20 0
Unknown 155 152 0 0
TOTAL 22280 13912 4140 5924 23755 16026 7728
App Summary
Pss(KB)
------
Java Heap: 7492
Native Heap: 4744
Code: 4212
Stack: 320
Graphics: 0
Private Other: 1284
System: 4228
TOTAL: 22280 TOTAL SWAP (KB): 5924
Objects
Views: 99 ViewRootImpl: 1
AppContexts: 3 Activities: 1
Assets: 3 AssetManagers: 3
Local Binders: 17 Proxy Binders: 21
Parcel memory: 6 Parcel count: 24
Death Recipients: 2 OpenSSL Sockets: 0
SQL
MEMORY_USED: 0
PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
- dalvik : dalvik使用的内存
- native : native堆上的内存,指C\C++堆的内存(android 3.0以后bitmap就是放在这儿)
- other : 除了dalvik和native的内存,包含C\C++非堆内存······
- Pss : 该内存指将共享内存按比例分配到使用了共享内存的进程
- heap alloc : 已使用的内存
- heap free : 空闲的内存
- share dirty : 共享,但有不能被换页出去的内存
- private dirty : 非共享,又不能被换页出去的内存(比如linux系统中为了提高分配内存速度而缓冲的小对象,即使你的进程已经退出,该内存也不会被释放)