特别申明:本文仅供自己学习记录使用,所写内容来自各网页,如需转载自己去查找内容出处。如有侵权请联系在下,评论、私信等不论。
目录
3.File Exporler:File Exporler文件浏览器
一、Android Monitor
1.DDMS概念
DDMS 的全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务。
它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
在集成开发环境中,有DDMS控制台窗口。如,MyEclipse中,有个叫DDMS的Console。
打开ddms
1、找到Android Device Moniitor
2、如果未下载便会出现下载界面,下载好即可打开ddms
2.ddms功能
1.Thread:查看进程中线程情况。
做线程分析,如果发现有这样的提示
“Thread updates not enabled for selected client(use toobar button to enable)”
则需要进行以下操作:
Windows->Preferences->Android->DDMS -> ‘Thread Updates
Enabled by Default’
重启ADM即可。
2.Heap
查看应用中内存使用情况。
Retained Size(包括直接引用的和间接引用的内存)
2.1 Start Allocaton Tracking
开始分配追踪,第一次点击可以指定追踪内存的开始位置,第二次点击可以结束追踪的位置。
3.File Exporler:File Exporler文件浏览器
查看Android模拟器中的文件,可以很方便的导入/出文件。例如下图就是文件查看,在这里显示当前模拟器的所有文件
4.查看特定界面的展示及布局元素构成
右边的代码部分可以查看布局详情

5.Devices
查看到所有与DDMS连接的模拟器详细信息,以及每个模拟器正在运行的APP进程,每个进程最右边相对应的是与调试器链接的端口。
6.Emulator Control
实现对模拟器的控制,如:接听电话,根据选项模拟各种不同网络情况,模拟短信发送及虚拟地址坐标用于测试GPS功能等。
7、Screen captrue:截屏操作
在这里还提供了截图功能(截图的是功能界面例如上几个界面)
8.LogCat
查看日志输入信息,可以对日志输入进行Filter过滤一些调试的信息筛选查看等。
9.Dump HPROF file
点击DDMS工具条上面的Dump HPROF文件按钮,选择文件存储位置,然后在运行hprof-conv。可以用MAT分析heap dumps启 动MAT然后加载刚才我们生成的HPROF文件。MAT是一个强大的工具,讲述它所有的特性超出了本文的范围,所以我只想演示一种可以用来检测 泄露的方法:直方图(Histogram)视图。它显示了一个可以排序的类实例的列表,内容包括:shallow heap(所有实例的内存使用总和),或者retained heap(所有类实例被分配的内存总和,里面也包括他们所有引用的对象)等。
10.原文链接 必看参考
11.GC Roots
11.1 对象存活的判定:
当一个对象不会再被使用的时候,我们会说这对象已经死亡。对象何时死亡,写程序的人应当是最清楚的。如果计算机也要弄清楚这件事情,就需要使用一些方法来进行对象存活判定,常见的方法有引用计数(Reference Counting)和有可达性分析(Reachability Analysis)两种。
11.2 引用计数算法的大致思想是给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。
Java语言里面没有选用引用计数算法来管理内存,其中最主要原因是它没有一个优雅的方案解决对象之间相互循环引用的问题:
当两个对象互相引用,即使它们都无法被外界使用时,它们的引用计数器也不会为0。
11.3 可达性算法的基本思路就是通过一系列的称为GC根节点(GC Roots)的对象作为起始点,从这些节点开始进行向下搜索,搜索所走过的路径成为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连(用图论的话来说就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。
11.4 Java中可以作为GC Roots的对象
- 虚拟机栈(栈帧中的本地变量表)中引用的对象
- 方法区中类静态属性引用的对象
- 方法区中常量引用的对象
- 本地方法栈中JNI(即一般说的native方法)中引用的对象