1.啟動應用
1.png
2.查看堆信息
2.png
3.分析
3.png
4.png
4.查看分析結果
5.png
6.png
5.總結
內存泄漏:在Java中有些對象的生命周期是有限的,當它們完成了特定的邏輯后將會被垃圾回收;但是,如果在對象的生命周期本來該被垃圾回收時這個對象還被別的對象所持有引用,那就會導致內存泄漏。
- context長期持有:當activity已經銷毀,但是任然有其他對象持有其傳遞過去的context引用,導致GC無法回收(盡可能使用applicationContext對象可以在一定程度上避免這個問題)
- static修飾成員變量:static修飾的成員屬于類,而不是對象,所以該成員的引用的生命周期會較長,可能會導致內存泄漏(盡量避免static修飾的成員引用資源耗費過多的實例,如Context;在Activity生命周期結束時手動置空該引用,從而使得GC可以回收)
簡言之:不要把activity輕易的交給其他“人”,如果非要這么做,記得在自己銷毀時,收回(置空)自己的引用。