【安卓基础四】adb命令使用Heap检测和分析Android应用内存
2016-03-04 18:28
417 查看
Android Tools中的DDMS带有一个很不错的内存检测工具Heap。使用Heap检测应用进程使用内存情况步骤如下:
在Eclipse中安装和使用Heap步骤
Eclipse安装Heap插件
1.Andorid开发环境的时候,默认将该工具包含到ADT插件中。所以不必有额外的安装。
2.启动Eclipse,切换到DDMS透视图
启动Eclipse,点击DDMS按钮,切换到DDMS透视图。并保证Device视图、Heap视图都打开了。
3.将手机连接通过USB链接到电脑
将手机链接到电脑,链接时需要确认手机处于“USB调试”模式。链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,以及设备正在运行的部分进程的信息。
4.选中想要检检测的进程
点击选中你想要检测的进程,比如com.plamdream.RuyicaiAndroid。在点击选中Device视图界面上放一排图标的“UpdateHeap”图标。
5.查看内存检查的信息
点击Heap标签,切换到Head视图中。点击“CauseGC”按钮,此时在Heap视图中,就会看到当前选中的进程的内存使用量的详情。
点击“CauseGC“按钮相当于向虚拟机请求了一次gc操作。当内存使用信息第一次显示以后,无须再不断的点击“CauseGC“,Heap视图会定时刷新,在对应用不断的操作过程中就可以看到内存使用的变化。
6.判断我们的程序是否有内存泄露的可能性
这里需要注意一个值,Heap视图中,有一个Type叫做dataobject,即数据对象,也就是我们程序中大量存在的类类型的对象。它有一个TotoalSize列,就是当前进程中所有Java数据对象的内存总量。一般情况下,这个值的大小决定了是否会有内存泄露。
不断操作当前应用,同时注意观察dataobject的TotoalSize值。
正常情况下:TotalSize值都会稳定在一个有限的范围内,也就是由于程序中的代码良好,没有造成对象不被垃圾回收的情况。所以说虽然我们不断的操作会不对生成很多新的对象,而现在虚拟机不断的进行GC的过程,这些对象都会被回收了,内存占有量会回落到一个稳定水平。
异常情况:如果代码中存在没有释放对象引用的情况,则dataobject的TotoalSize值在每次GC后会不明显回落,随着操作次数的增多TotoalSize的值会越来越大。
在Eclipse中安装和使用Heap步骤
Eclipse安装Heap插件
1.Andorid开发环境的时候,默认将该工具包含到ADT插件中。所以不必有额外的安装。
2.启动Eclipse,切换到DDMS透视图
启动Eclipse,点击DDMS按钮,切换到DDMS透视图。并保证Device视图、Heap视图都打开了。
3.将手机连接通过USB链接到电脑
将手机链接到电脑,链接时需要确认手机处于“USB调试”模式。链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,以及设备正在运行的部分进程的信息。
4.选中想要检检测的进程
点击选中你想要检测的进程,比如com.plamdream.RuyicaiAndroid。在点击选中Device视图界面上放一排图标的“UpdateHeap”图标。
5.查看内存检查的信息
点击Heap标签,切换到Head视图中。点击“CauseGC”按钮,此时在Heap视图中,就会看到当前选中的进程的内存使用量的详情。
点击“CauseGC“按钮相当于向虚拟机请求了一次gc操作。当内存使用信息第一次显示以后,无须再不断的点击“CauseGC“,Heap视图会定时刷新,在对应用不断的操作过程中就可以看到内存使用的变化。
6.判断我们的程序是否有内存泄露的可能性
这里需要注意一个值,Heap视图中,有一个Type叫做dataobject,即数据对象,也就是我们程序中大量存在的类类型的对象。它有一个TotoalSize列,就是当前进程中所有Java数据对象的内存总量。一般情况下,这个值的大小决定了是否会有内存泄露。
不断操作当前应用,同时注意观察dataobject的TotoalSize值。
正常情况下:TotalSize值都会稳定在一个有限的范围内,也就是由于程序中的代码良好,没有造成对象不被垃圾回收的情况。所以说虽然我们不断的操作会不对生成很多新的对象,而现在虚拟机不断的进行GC的过程,这些对象都会被回收了,内存占有量会回落到一个稳定水平。
异常情况:如果代码中存在没有释放对象引用的情况,则dataobject的TotoalSize值在每次GC后会不明显回落,随着操作次数的增多TotoalSize的值会越来越大。
相关文章推荐
- Android开发中的View类的视图属性focusableInTouchMode这个属性跟focusable有什么区别?
- ViewGroup的事件分发机制
- Android新手入门2016(1)--创建和运行helloworld
- Android L+ Theme 与 Toolbar
- Android Studio 上传SVN标准全过程
- Android工程的编译过程
- Android应用程序资源
- Android应用开发之使用Socket进行大文件断点上传续传
- Xp 下使用 Fiddler 抓取android手机包
- 2014年880个合集Android_实例子源代码文件下载地址合集-2014
- Android应用程序资源——Animation动画资源
- Android源代码之Gallery专题研究(2)
- AndroidStudio 使用Release签名进行Debug
- 关于android开发中的一点思考
- Android实战经验之图像处理及特效处理的集锦(总结版)
- android中最好的瀑布流控件PinterestLikeAdapterView
- Android中的类装载器DexClassLoader
- Android TV如何杀死后台正在播放的媒体应用。。。
- Android Get方法和POST方法发送请求
- android xml中转义字符使用