使用Eclipse----DDMS(最好root过的手机)遇到及解决办法

安装eclipse后记得要做的一件事:把编码格式转换成UTF-8,,windows->preferences->general->workspace

使用Eclipse -- DDMS遇到问题,解决方案是百度、google的,但是都是亲测可用。

1.Android adb.exe程序启动不起来,如何处理

端口占用:

5037为adb默认端口,查看该端口情况如下:

netstat -aon|findstr  5037

TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 6540

发现6540占用了5037端口,继续查看6540的task,发现是wandoujia,

tasklist |findstr “6540”

wandoujia_daemon.exe 6540 Console 1 4,276 K

接下来问题就好解决了,在任务管理器kill掉wandoujia_daemon.exe,运行android程序,ok .


2.The connection to adb is down, and a severe error has occured

eclipseandroidserver任务

启动android模拟器时.有时会报The connection to adb is down, and a severe error has occured.的错误.在网友说在任务管理器上把所有adb.exe关闭掉.重启eclipse.但试过不管用.所以在外国网站上找到一种可行的方法:

1.先把eclipse关闭.

2.在管理器转到你的androidSDK 的platform-tools下, 如图:

3.键入adbkill-server ,如果adb关闭了会提示 server not running *
4.再输入 adbstart-server  如果不成功会提示 daemon not running. starting it now on port  ***的 而如果成功的话不提示任何语句的.这时再重新打开eclipse就可以正常运行模拟器的了.

还有一种情况,真机调试的时候,你开了腕豆夹,导致端口冲突了,前面一直没留意这个问题 ,解决办法:安装完手机的驱动后,关闭腕豆夹,重启eclipse,应该就可以了。腕豆夹与eclipse一般不同时打开!

3. Android:adbconnection Error:远程主机强迫关闭了一个现有的连接

问题出现的原因:这是ddms调用adb引发的. 经过一番搜索, 发现这是windows环境下, adb的一个限制, 也可以说是bug.当手机上同时运行的进程数大于64时, 就会引发adb奔溃. 更深层次的原因, 就是windows API的WaitForMultipleObjects所支持的最大句柄数是MAXIMUM_WAIT_OBJECTS, 即64.

解决办法:

1.DDMS->Devices->Reset adb

2.重启eclipse

3.解决问题的办法:http://code.google.com/p/android/issues/detail?id=12141
下载相应的adb.exe文件,用它替换掉你机器上的sdk的platform/tools目录下面的adb.exe。这样就可以完美解决问题。

4.重启虚拟设备

或者adb kill-server    

adb start-server


4.Android 内存监测工具 DDMS --> Heap

一、什么是内存泄露
    内存泄露是指程序中间动态分配了内存,但是在程序结束时没有释放这部分内存,从而造成那一部分内存不可用。导致系统运行变慢或应用程序崩溃。
二、如何检测Android中的内存泄露
    Android tools中的DDMS带有一个很不错的内存监测工具Heap,可以检测一个进程的内存变化,根据这个工具我们大致可以测试某个应用是否存在泄漏的可能。
三、具体操作
   1、打开eclipse,切换到DDMS,并确认Devices视图、Heap视图都是打开的;
   2、将手机通过USB链接至电脑,链接时,选择 “USB调试”模式;
   3、链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,以及设备中正在运行的部分进程信息
   4、在Devices 中,点击要监控的程序。
   5、点击Devices视图界面中最上方一排图标中的“Update Heap”
   6、点击Heap视图
   7、点击Heap视图中的“Cause GC”按钮;
   8、到此为止需检测的进程就可以被监视。如下图:


四、如何判断内存泄露
   Heap视图中部有一个Type叫做data object,即数据对象,也就是我们的程序中大量存在的类类型的对象。在dataobject一行中有一列是“TotalSize”,其值就是当前进程中所有Java数据对象的内存总量,一般情况下,这个值的大小决定了是否会有内存泄漏。可以这样判断:
1.进入某应用,不断的操作该应用,同时注意观察data object的Total Size值
2.正常情况下TotalSize值都会稳定在一个有限的范围内.
3.反之如果代码中存在没有释放对象引用的情况,则data object的Total Size值在每次GC后不会有明显的回落,随着操作次数的增多Total Size的值会越来越大,直到到达一个上限后导致进程被kill掉。
    在我们的程序中,要是出现某个进程出现了不断增加的现象,可能该应用就存在泄漏的问题。如果某个进程在操作过程中出现程序崩溃,可能该应用程序已申请不到空间,可能存在内存泄露。

 

曲线每次向下  是做了一次垃圾回收  如果人数不上涨  每次向下探的越来越浅  那就是很可能有泄漏

 

 

内存泄露别的方法:

仅供参考
1. 读内存信息的命令 cat /proc/meminfo 
2. 做一个动作,停止;读取下内存信息,查看占用内存和可用内存
3. 重复:做一个相同动作,读取内存信息
4. 若发现占用内存渐渐变大,可用内存变小。说明每次操作 停止后,内存没有释放。 则说明内存泄漏

 

PC上可以写个bat或shell定时抓取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值