android 程序内存分析
2015-06-30 11:33
435 查看
1、java 层内存占用分析
可以通过eclipse中的DDMS(Dalvik Debug Monitor Service)查看某个进程java 虚拟机的内存占用情况。
使用方法参见:http://blog.csdn.net/feng88724/article/details/6460918
也可以生成heap dump文件,通过MAT工具分析内存泄露问题。
2、native层内存占用分析:参考http://tju-jusi.iteye.com/blog/1544778
可以通过eclipse中的DDMS(Dalvik Debug Monitor Service)查看某个进程java native 的内存占用情况。
1)setprop libc.debug.malloc 1
stop
start
支持的参数: (注明:本人测试只有1可用)
2)eclipse 中的C:\Users\XXXX\.android\ddms.cfg文件末尾添加
native=true
3)从SDK\tools 中启动独立的 DDMS ( ddms.bat )可以看见 native heap 选项卡
4)找到自己的库函数***.so 后面的 Method 列中的地址。使用 NDK 中的 addr2line 工具,
用法:在命令行中addr2line.exe -e ***\obj\local\armeabi\***.so 地址
注意,一定要是obj 底下的 .so , lib 里面的是不含有符号表的。
另外 Method 中的地址一般要将高 3(或者2) 位置 0 , 80cc6e22 变为 000c6e22 。 80dxxxxx 的怎么变自己领悟吧。
3.总的进程内存占用情况,参考http://blog.csdn.net/haima1998/article/details/46693441
通过dumpsys meminfo pid 来查看进程的Native heap和dalvik size
root@device:/ # dumpsys meminfo 3808
Applications Memory Usage (kB):
Uptime: 3819006 Realtime: 3819006
** MEMINFO in pid 3808 [com.XXX.tv.XXX.XXX] **
Pss Private Private Swapped Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 0 0 0 0 4944 3677 1266
Dalvik Heap 0 0 0 0 35663 26822 8841
Dalvik Other 1653 1652 0 0
Stack 248 248 0 0
Ashmem 37885 37820 0 0
Other dev 5 0 4 0
.so mmap 4925 3092 20 0
.jar mmap 0 0 0 0
.apk mmap 171 0 0 0
.ttf mmap 428 0 212 0
.dex mmap 3225 0 2472 0
Other mmap 31 4 0 0
Unknown 3517 3516 0 0
TOTAL 52088 46332 2708 0 40607 30499 10107
Objects
Views: 155 ViewRootImpl: 1
AppContexts: 3 Activities: 1
Assets: 3 AssetManagers: 3
Local Binders: 12 Proxy Binders: 23
Death Recipients: 2
OpenSSL Sockets: 0
SQL
MEMORY_USED: 0
PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
Asset Allocations
zip:/data/app/com.XXX.tv.XXX.XXX-1.apk:/resources.arsc: 171K
可以通过eclipse中的DDMS(Dalvik Debug Monitor Service)查看某个进程java 虚拟机的内存占用情况。
使用方法参见:http://blog.csdn.net/feng88724/article/details/6460918
也可以生成heap dump文件,通过MAT工具分析内存泄露问题。
2、native层内存占用分析:参考http://tju-jusi.iteye.com/blog/1544778
可以通过eclipse中的DDMS(Dalvik Debug Monitor Service)查看某个进程java native 的内存占用情况。
1)setprop libc.debug.malloc 1
stop
start
支持的参数: (注明:本人测试只有1可用)
1 - perform leak detection 5 - fill allocated memory to detect overruns 10 - fill memory and add sentinels to detect overruns 20 - use special instrumented malloc/free routines for the emulator |
native=true
3)从SDK\tools 中启动独立的 DDMS ( ddms.bat )可以看见 native heap 选项卡
4)找到自己的库函数***.so 后面的 Method 列中的地址。使用 NDK 中的 addr2line 工具,
用法:在命令行中addr2line.exe -e ***\obj\local\armeabi\***.so 地址
注意,一定要是obj 底下的 .so , lib 里面的是不含有符号表的。
另外 Method 中的地址一般要将高 3(或者2) 位置 0 , 80cc6e22 变为 000c6e22 。 80dxxxxx 的怎么变自己领悟吧。
3.总的进程内存占用情况,参考http://blog.csdn.net/haima1998/article/details/46693441
通过dumpsys meminfo pid 来查看进程的Native heap和dalvik size
root@device:/ # dumpsys meminfo 3808
Applications Memory Usage (kB):
Uptime: 3819006 Realtime: 3819006
** MEMINFO in pid 3808 [com.XXX.tv.XXX.XXX] **
Pss Private Private Swapped Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 0 0 0 0 4944 3677 1266
Dalvik Heap 0 0 0 0 35663 26822 8841
Dalvik Other 1653 1652 0 0
Stack 248 248 0 0
Ashmem 37885 37820 0 0
Other dev 5 0 4 0
.so mmap 4925 3092 20 0
.jar mmap 0 0 0 0
.apk mmap 171 0 0 0
.ttf mmap 428 0 212 0
.dex mmap 3225 0 2472 0
Other mmap 31 4 0 0
Unknown 3517 3516 0 0
TOTAL 52088 46332 2708 0 40607 30499 10107
Objects
Views: 155 ViewRootImpl: 1
AppContexts: 3 Activities: 1
Assets: 3 AssetManagers: 3
Local Binders: 12 Proxy Binders: 23
Death Recipients: 2
OpenSSL Sockets: 0
SQL
MEMORY_USED: 0
PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
Asset Allocations
zip:/data/app/com.XXX.tv.XXX.XXX-1.apk:/resources.arsc: 171K
相关文章推荐
- Android进程的内存管理分析
- Android突发情况(来电话,按Home键,内存不足)如何保存数据
- android 电话状态的监听(来电和去电) PhoneStateListener和TelephonyManager
- 代码实现android手机信号监听
- Android高效显示图片详解(二)
- Android系列---JSON数据解析
- Android 使用Parcelable序列化对象
- Android高效显示图片详解(一)
- Android Studio 视图解析
- 解析Android游戏中获取电话状态进行游戏暂停或继续的解决方法
- android解析xml一直报错org.xmlpull.v1.XmlPullParserException
- android中handlerthread与handler + thread区别
- Android之.9.png图片使用
- android数据存储和访问
- Android Socket UDP通信的简单演示
- android开发遇到的各种bug
- android的listview中setselection()不起作用的解决方案
- android添加背景音乐
- Ubuntu 下Android开发常用命令笔记
- Android L中的RecyclerView 、CardView 、Palette的使用