android 查看内存使用情况
对android 内存分析比较好的Blog:
1.http://blog.csdn.net/gemmem/article/details/8920039
主要介绍
1、进程的地址空间。
2、进程内存空间和RAM之间的关系。
3、Android中的进程。
4、Android中进程的堆内存。
5、Android的 java程序为什么容易出现OOM。
6、Android如何应对RAM不足。
7、如何查看RAM使用情况。
8、如何查看进程的内存信息。
9、应用程序如何绕过dalvikvm heapsize的限制。
10、Bitmap分配在native heap还是dalvik heap上?
一、分析整个系统的内存使用情况:
1、 Procrank
Android 自带的内存分析工具,对各个进程的内存使用进行排序(by Pss default).
# procrank
PID Vss Rss Pss Usscmdline
3351 1058776K163952K 141197K 139596K com.google.earth
2616 943156K116020K 93360K 91724K com.android.vending
539 990756K 112504K91393K 89808K com.android.systemui
4657 995760K105964K 77829K 70776K com.rovio.angrybirds
...
119 31904K 7676K6038K 5900K /system/bin/surfaceflinger
122 27468K 3788K3045K 2964K /system/bin/mediaserver
...
120 865084K 24308K2263K 860K zygote
...
------ ------ ------
717098K 669272KTOTAL
RAM: 1124832Ktotal, 105528K free, 3808K buffers, 136624K cached,
656K shmem, 23656Kslab
2、 Dumpsysmeminfo
Android 自带的内存分析工具,dumpsys只能查看java进程,procrank可以查看Native进程和java进程。 .
3、 Cat /proc/meminfo
查看总的内存使用情况.
MemTotal:396708kB
MemFree:4088kB
Buffers:5212kB
Cached:211164kB
Mlocked:0kB
HighTotal:0kB
HighFree:0kB
LowTotal:396708kB
LowFree:4088kB
SwapTotal:0kB
……
……
MemTotal:可以使用的RAM总和(小于实际RAM,操作系统预留了一部分)
MemFree:未使用的RAM
Cached:缓存(这个也是app可以申请到的内存)
HightTotal:RAM中地址高于860M的物理内存总和,只能被用户空间的程序使用。
HightFree:RAM中地址高于860M的未使用内存
LowTotal:RAM中内核和用户空间程序都可以使用的内存总和(对于512M的RAM: lowTotal= MemTotal)
LowFree: RAM中内核和用户空间程序未使用的内存(对于512M的RAM: lowFree = MemFree)
4、 Ps -x
该方式主要得到的是内存信息是VSIZE 和RSS。.
二、分析单个进程的内存使用情况
1、Procmem +进程号
可查看进程的各个部分内存使用情况,包括通过驱动申请的内存
# procmem 119
Vss Rss Pss UssShCl ShDi PrCl PrDi Name
------- -------------- ------- ------- ------- ------- -------
4K 0K 0K 0K 0K 0K0K 0K
1012K 4K 4K 4K 0K0K 4K 0K [stack:944]
512K 512K 512K 512K0K 0K 36K 476K /dev/mali0
512K 512K 512K 512K0K 0K 0K 512K /dev/mali0
516K 12K 12K 12K 0K0K 12K 0K [anon:libc_malloc]
512K 512K 512K 512K0K 0K 224K 288K /dev/mali0
512K 512K 512K 512K0K 0K 32K 480K /dev/mali0
516K 12K 12K 12K 0K0K 12K 0K [anon:libc_malloc]
...
2680K 2668K 2668K2668K 0K 0K 2668K 0K [heap]
132K 20K 20K 20K 0K0K 20K 0K [stack]
0K 0K 0K 0K 0K 0K0K 0K [vectors]
------- -------------- ------- ------- ------- ------- -------
31904K 7676K 6039K5900K 1760K 16K 4144K 1760K TOTAL
2、Dumpsys meminfo + pid/packageName
可查看进程的dalvik-heap,NativeHeap大小
[email protected]:/ $ dumpsys meminfo 1051
dumpsys meminfo 1051
Applications Memory Usage (kB):
Uptime: 184110340 Realtime: 419146160
** MEMINFO in pid 1051[com.android.systemui] **
Shared PrivateHeap Heap Heap
Pss DirtyDirty Size AllocFree
------ ------------ ------ ------------
Native 00 0 2427621430 2321
Dalvik17339 5612 1723620864 15142 5722
Stack 144 8144
Cursor 0 00
Ashmem 0 00
Other dev 6564 16965756
.so mmap 1559 27041192
.jar mmap 0 00
.apk mmap 1197 00
.ttf mmap 481 00
.dex mmap 662 00
Other mmap 42 84
Unknown 18510 52018504
TOTAL 46498 1054842836 45140 365728043
Objects
Views: 316 ViewRootImpl: 2
AppContexts: 29 Activities: 0
Assets: 8AssetManagers: 8
Local Binders: 64 Proxy Binders: 69
Death Recipients: 5
OpenSSL Sockets: 0
SQL
MEMORY_USED: 0
PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
Asset Allocations
zip:/data/app/com.UCMobile-2.apk:/resources.arsc: 522K
zip:/data/app/com.tencent.mobileqq-1.apk:/resources.arsc: 1204K
更多相关文章
- Android进程间通信--消息机制及IPC机制实现
- Android 8.1 zygote创建新应用进程
- android杀进程方法
- 利用oom_adj提高Application所在进程的优先级
- Android:什么情况?
- android中线程进程模型
- Android内存管理基本介绍
- Android ContentProvider 多进程multiprocess 详解