如何定位和解决Android的内存溢出问题
展开全部
一、定位内存泄漏:
可以用LeakCanary:检测所有的内存泄漏
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0509/2854.html
二、解决:
1.对各种流,文件资源渗卜衡这些比如:InputStream/OutputStream,SQLiteOpenHelper,SQLiteDatabase,Cursor,文件,I/O,Bitmap图片等操作等都应该记得显示关闭。
2.尽量避免丛做static成员变量引用资源耗费过多的实例,比如Context。因为Context的引用超过它本身的生命周期,会导致Context泄漏。所弊族以尽量使用Application这种Context类型。
3.使用线程池,不要newthread
4.UI视图检查,减少视图层级(hierarchyviewer)。
5.图片优化
6. 重用系统资源:系统定义id,系统图片,系统布局,系统style,系统字符串,系统颜色定义
可以用LeakCanary:检测所有的内存泄漏
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0509/2854.html
二、解决:
1.对各种流,文件资源渗卜衡这些比如:InputStream/OutputStream,SQLiteOpenHelper,SQLiteDatabase,Cursor,文件,I/O,Bitmap图片等操作等都应该记得显示关闭。
2.尽量避免丛做static成员变量引用资源耗费过多的实例,比如Context。因为Context的引用超过它本身的生命周期,会导致Context泄漏。所弊族以尽量使用Application这种Context类型。
3.使用线程池,不要newthread
4.UI视图检查,减少视图层级(hierarchyviewer)。
5.图片优化
6. 重用系统资源:系统定义id,系统图片,系统布局,系统style,系统字符串,系统颜色定义
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询