如何定位和解决Android的内存溢出问题(大总

 我来答
云郎木子d5
2018-07-16 · TA获得超过3.3万个赞
知道大有可为答主
回答量:1778
采纳率:94%
帮助的人:200万
展开全部
一、定位内存泄漏:
可以用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,系统字符串,系统颜色定义
厦门侯
高粉答主

2018-07-16 · 专注电子科技,数码电脑达人。
厦门侯
采纳数:30618 获赞数:90315

向TA提问 私信TA
展开全部
内存溢出的错误,没办法根据错误日志定位到哪一行,但是只需要了解内存溢出可能出现的原因定位错误还是不难的。
1、代码编码不合理,错误的引用,比如Handler中持有Activity对象,但是Handler又在执行长时间的任务,就会造成Activity内存泄漏。
2、Bitmap的错误使用,大量使用bitmap却又没有释放,很容易造成内存泄漏。
3、访问数据库Cursor或者数据流忘记关闭也会造成数据泄漏
4、Adapter错误的写法,没有对Item进行复用,也会内存泄漏
5、死循环,无限递归也会造成泄漏
如果实在找不到,可以借助内存分析的工具,AndroidStdio,和Eclipse中都有,或者第三方都可以。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式