老师您好,请问下文件句柄的泄漏,有没系统的检测和解决方案呢?

来源:4-10 内存优化模拟面试

慕尼黑5552265

2021-03-18

老师您好,请问下文件句柄的泄漏,有没系统的检测和解决方案呢?我了解到的以下文件句柄泄漏常见场景,注意在使用完后关闭或销毁。

  1. 数据库: Cursor使用完未关闭
  2. 输入输出:FileInputStream,FileOutputStream,FileReader,FileWriter 等输入输出使用完未关闭
  3. HandlerThread:HandlerThread 是带有 Looper 的 thread因为声明 Looper 相当于增加了一块缓冲区,需要有一个 FD 来标识。如果反复调用下面这段代码也会出现 FD 泄漏。如果确定不需要 Looper,可以使用Looper.quit() 或者 Looper.quitSafely() 来退出 Looper,避免出现 FD 泄漏。
  4. socket: 其他大量使用socket通信,但未关闭的情况
  5. Dialog:使用完Dialog之后需要主动dismiss。否则也会造成泄露(见附1报错log)
写回答

1回答

随风绽放

2021-03-21

同学你好,我们是定时采集 fd 的数量,超过一定数量则采集所有 fd 的名称,然后上报进行聚合排查。

0
3
慕尼黑5552265
非常感谢!
2021-03-28
共3条回复

Top团队大牛带你玩转Android性能分析与优化

由表及里学到国内Top团队对性能问题的体系化解决方案

1696 学习 · 532 问题

查看课程