面试中内存泄露的原因及解决方案是经常被问到的点,下面直接给大家罗列一下原因及解决方案,临阵磨枪哈哈。
原因:
2.静态变量导致内存泄漏
3.非静态内部类导致内存泄露
4.未取消注册或回调导致内存泄露
5.Timer和TimerTask导致内存泄露
6.集合中的对象未清理造成内存泄露
7.资源未关闭或释放导致内存泄露
8.属性动画造成内存泄露
9.WebView造成内存泄露
解决方案:
1.构造单例的时候尽量别用Activity的引用;
2.静态引用时注意应用对象的置空或者少用静态引用;
3.使用静态内部类+弱引用代替非静态内部类;
4.及时取消广播或者观察者注册;
5.耗时任务、属性动画在Activity销毁时记得cancel;
6.文件流、Cursor等资源及时关闭;
7.Activity销毁时WebView的移除和销毁。
内存泄露检测工具:
DDMSLeakCanaryhaha/sharkAndroid ProfileMATJhatdumpsys meminfoAPTLeakInspectorChrome DevtoolGC Log
以上工具中,常用的应该前面几个,后面的了解即可。
推荐一本Android进阶书籍,非常值得仔细反复的看
热门跟贴