Android App 内存泄露之调试工具(1)
Android App 内存泄露之工具(1)
使用内存监測工具
DDMS –> Heap
操作步骤
启动eclipse后,切换到DDMS透视图,并确认Devices视图、Heap视图都是打开的,没打开的直接Window>ShowView>自己选
将手机通过USB链接至电脑。链接时须要确认手机是处于“USB调试”模式
链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,以及设备中正在执行的部分进程信息;
点击选中想要监測的进程,假设在进程列表中未出现你的进程的话随便选中一条让Device一排的工具处于可用状态。再击下Update Heap 让其自己主动找到我们跑的应用的进程。比方小马暂时跑的两个应用进程如图。
点击Heap视图中的“Cause GC”button;
点击Cause GC之后就能够看到我们应用的内存情况例如以下图:
说明:
1点击“Cause GC”button相当于向虚拟机请求了一次gc操作
2当内存使用信息第一次显示以后,无须再不断的点击“Cause GC"
Heap视图界面会定时刷新,在相应用的不断的操作过程中就能够看到内存使用的变化
3 内存使用信息的各项參数依据名称就可以知道其意思,不知道详细意思的朋友自行用工具(有道、词霸查去)
知道工具使用了。那么怎样才干知道我们的程序是否有内存泄漏的可能性呢。
这里须要注意一个值:Heap视图中部有一个Type叫做data object,即数据对象,也就是我们的程序中大量存在的类类型的对象。
在data object一行中有一列是“Total Size”,其值就是当前进程中全部Java数据对象的内存总量。
假设大家想要看“Total Size”是分配的具体信息能够点击“data object这一行来查看具体信息,例如以下图”(大家看不清楚的点击看大图)
普通情况下,在data
object行的“Total Size”这个值的大小决定了是否会有内存泄漏。
能够这样推断:
a) 不断的操作当前应用,同一时候注意观察data object的Total Size值。
b) 正常情况下Total Size值都会稳定在一个有限的范围内。也就是说因为程序中的的代码良好,没有造成对象不被垃圾回收的情况,
所以说尽管我们不断的操作会不断的生成非常多对 象,而在虚拟机不断的进行GC的过程中。这些对象都被回收了,
内存占用量会会落到一个稳定的水平;
c) 反之假设代码中存在没有释放对象引用的情况,则data object的Total Size值在每次GC后不会有明显的回落。
随着操作次数的增多Total Size的值会越来越大。直到到达一个上限后导致进程被杀掉。
欢迎关注我的github
Android App 内存泄露之调试工具(1)的更多相关文章
- Android App 内存泄露之Thread
Thread 内存泄露 线程也是造成内存泄露的一个重要的源头.线程产生内存泄露的主要原因在于线程生命周期的不可控. 1.看一下以下是否存在问题 <span style="white-s ...
- Android App 内存泄漏Handler
Android App 内存泄露之Handler Handler也是造成内存泄露的一个重要的源头,主要Handler属于TLS(Thread Local Storage)变量,生命周期和Activit ...
- Android 的内存泄露和内存限制
转载自 https://blog.csdn.net/goodlixueyong/article/details/40716779 https://blog.csdn.net/vshuang/artic ...
- Android 常见内存泄露 & 解决方案
前言 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃 (OOM) 等严重后果. 那什么情况下不能被 ...
- Android 防内存泄露handler
Android 防内存泄露handler 1.使用弱引用 WeakRefHander /** * 作者: allen on 15/11/24.感谢开源作者https://coding.net/u/co ...
- Android常见内存泄露,学会这六招优化APP性能
很多开发者都知道,在面试的时候会经常被问到内存泄露和内存溢出的问题. 1.内存溢出(Out Of Memory,简称 OOM),通俗理解就是内存不够,即内存占用超出内存的空间大小. 2.内存泄漏(Me ...
- 【转】.. Android应用内存泄露分析、改善经验总结
原文网址:http://wetest.qq.com/lab/view/107.html?from=ads_test2_qqtips&sessionUserType=BFT.PARAMS.194 ...
- Android之内存泄露、内存溢出、内存抖动分析
内存 JAVA是在JVM所虚拟出的内存环境中运行的,内存分为三个区:堆.栈和方法区.栈(stack):是简单的数据结构,程序运行时系统自动分配,使用完毕后自动释放.优点:速度快.堆(heap) ...
- Android中内存泄露与如何有效避免OOM总结
一.关于OOM与内存泄露的概念 我们在Android开发过程中经常会遇到OOM的错误,这是因为我们在APP中没有考虑dalvik虚拟机内存消耗的问题. 1.什么是OOM OOM:即OutOfMemoe ...
随机推荐
- MVC应用积累
1.Controller中的跳转 (1)直接Redirect后加(Controller/Action):Response.Redirect("/Home/Index"); (2)直 ...
- vscode - 设置中文语言
记得上次安装的时候,自动提示安装本地语言包,现在的版本貌似不会了吧. 1.先安装扩展,按键CTRL+SHIFT+P 输入 ext install ,最后输入:language,大概就可以找到简体中文包 ...
- php之快速入门学习-18(PHP 面向对象)
PHP 面向对象 在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象. 在现实 ...
- win10系统80端口被占用怎么办?
win10系统80端口被占用怎么办? 因为win10默认开启了IIS因此占用了80端口,可以netstat –ano 查到. 运行netstat -aon | findstr :80 ,发现pid是4 ...
- 寻找SQL注入点
如果要对一个网站进行SQL注入攻击,首先就需要找到存在SQL注入漏洞的地方,也就是寻找所谓的注入点.可能的SQL注入点一般存在于登录页面.查找页面或添加页面等用户可以查找或修改数据的地方. 最常用的寻 ...
- 解决this web application instance has been stopped already
重启tomcat的时候出错 Illegal access: this web application instance has been stopped already. Could not loa ...
- EXCEPTION-SQL语句
CreateTime--2017年1月12日14:37:52Author:Marydon 声明:异常类文章主要是记录了我遇到的异常信息及解决方案,解决方案大部分都是百度解决的,(这里只是针对我遇到 ...
- Java典型应用彻查1000例:图形与网络游戏开发 PDF 扫描版[68M]
<Java典型应用彻查1000例·图形与网络游戏开发>实例丰富,编排合理,可以让有初级Java基础的读者,从陌生到完全熟练地设计网络游戏,进而掌握3D立体绘图方法,适合作为Java网络游戏 ...
- hdu 4031(树状数组+辅助数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4031 Attack Time Limit: 5000/3000 MS (Java/Others) ...
- 锋利的jQuery(第二版)源码下载地址
书上给的http://cssrain.sinaapp.com无法访问 问作者邮箱要的: 第1版源码:百度云盘下载:http://pan.baidu.com/share/link?shareid=104 ...