App内存泄漏问题


一、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。

你可能感兴趣的:(App内存泄漏问题)