1、Eclipse IDE集成的DDMS调试器;
DDMS:Dalvik Debug Monitor Server.用于在模拟器或设备上运行的应用程序的详细信息、应用程序内的线程 、应用程序内的堆或内存以及文件资源管理器和模拟器控制器,可模拟GPS事件、拨入的电话或SMS消息。
LogCat:监视日志消息,该窗口显示android.util.log、异常、system.out.println等发出的日志消息。
2、StrictMode
用于对一个thread(ui线程或者分线程)检测它的读写操作、访问网络、数据库读写等耗时的操作并将其以log或者dialog等形式打印出来。在onCreate()方法添加StricMode设置。
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() //构造StrictMode
.detectDiskReads() //当发生磁盘读操作时输出
.detectDiskWrites() //当发生磁盘写操作时输出
.detectNetwork() //访问网络时输出
.penaltyLog() //以日志的方式输出
.build());
StrictMode还有一个VmPolicy。如果SQLite在关闭之前被终结,或者任何Closeable对象在关闭之前被终结,可使用VmPolicy检查内存泄漏。
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects() //探测SQLite数据库操作
.penaltyLog() //以日志的方式输出
.penaltyDeath()
.build());
VmPolicy主要检查以下内容:
- 内存泄露的Activity对象
- 内存泄露的SQLite对象
- 内存泄露的释放的对象
举例:
public void onCreate() {
if (DEVELOPER_MODE) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
super.onCreate();
}