App内存泄漏问题

来源:互联网 发布:网络新词及意思和出处 编辑:程序博客网 时间:2024/04/25 21:57

http://blog.csdn.net/a345017062/article/details/8518471


一、Java内存泄漏
1、主要原因Activity(静态引用)、Dialog在onDestroy时没有被dismiss等。
2、分析工具:
MAT产生的hrof文件查看引用链,断掉就OK。
AOP在onCreate、onDestroy、finalize埋点。在onDestory被调用后,运行GC,然后,如果finalize很长时间没有被调用就有内在泄漏了。
3、解决方案:
Context->Application
PackageManager管理Task,防止Activity被遗忘在栈底部。
Activity不用了以后,立即调用finish销毁。


二、C内存泄漏
1、主要原因:Bitmap没有回收、Webkit占用的资源、SQLite在内存中的缓存
2、分析工具:
Native Heap(DDMS工具隐藏自带)
3、解决方案:
针对Bitmap建议内存池。Activity.onStop时,把图片释放,Activity.onStart时,getView重新被调用时再读回来。
当Webview所在的Activity.onStop时,调用freeMemory。
减少SQLite的使用,或者单独进程建立ContentProvider。

0 0