最近遇到视频播放的时候,内存居高不下的问题。没有崩溃,没有anr,功能一切正常。唯独内存一直攀升。
小总结下:
1.fragment 在activity全局变量被依赖,虽然调用fragment.onDestory了,但无法真正回收。
2.fragment 内部类或者接口设置为null
3.播放器和textureView解绑,且设置为null或回收资源。
4.fragment在栈里的个数,使用一个或者每次创建。
工具使用:
1.Android profiler
1.打开profiler
2.操作app ,内存进度会一直变化。
多次点击force garbage collection ,使jvm 回收对象。
选中捕获堆转储,点击record
如果有内存泄漏,会在leaks 体现出来。
2.leakCanary
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0'
leakCanary 相关简单很多,只需要app build.gradle 加入上面依赖即可。运行app,会在leakCanaryAPP主动展示leak 信息。