Android系统每个进程创建的file descriptors 不能超多1024个。
查看某个进程FD数量的方法
adb shell lsof | grep | wc -l
文件输入输出流 XXInput/OutStream,需要close
Socket,需要close
数据库资源Cursor,需要close
Looper.prepare,HandlerThread,需要Looper.quit
参考资料:
Android Memory and File Descriptor Leaks, Diagnosis and Debugging: Android Memory and File Descriptor Leaks, Diagnosis and Debugging
Fd leak in Android: http://huzhengyu.com/2017/01/21/Fd-leak-in-Android/
fd 泄漏可以通过统计proc下fd数目观察是否持续增长来判断是否存在泄漏
查看方法:
1.获取进程id
ps | grep "包名"
2.统计当前进程fd数目
ls -l /proc/"进程号"/fd | wc -l