您的位置:首页 > 新闻 > 热点要闻 > 网站测试用例实例_安徽六安瓜片是什么茶_推广游戏赚钱的平台有哪些_seo谷歌

网站测试用例实例_安徽六安瓜片是什么茶_推广游戏赚钱的平台有哪些_seo谷歌

2025/7/4 4:12:20 来源:https://blog.csdn.net/langjian2012/article/details/144751124  浏览:    关键词:网站测试用例实例_安徽六安瓜片是什么茶_推广游戏赚钱的平台有哪些_seo谷歌
网站测试用例实例_安徽六安瓜片是什么茶_推广游戏赚钱的平台有哪些_seo谷歌

File Descriptor是Linux下概念,fd 是 int类型非负数!

进程打开File,Socket,Pipe后生成一个File Descriptor,它是打开这个系统资源的标识符。

Linux每个进程fd最大1024个,超过之后进程 crash

例如

  • 使用匿名共享内存,crash堆栈如下:

E AndroidRuntime: java.lang.Error: java.io.IOException: SharedMemory_create failed: EMFILE (Too many open files)

F DEBUG : Abort message: 'FORTIFY: FD_SET: file descriptor 1462 >= FD_SETSIZE 1024'

  • 使用fd = open(filename, O_RDONLY) 打开文件,报错:

如何监控fd泄漏?

  • StrictMode
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork() // or .detectAll() for all detectable problems.penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
  • 脚本定时读取fd:本地写shell/python脚本定时读取proc/pid/fd
  • shell命令读取fd总量或fd列表
 lsof -n -p pid  | wc -l 

fd标识符和泄漏文件类型关系

类型fd标识符
网络请求Socket
HandlerThreadanon_inode:[eventpoll]和anon_inode:[eventfd]成对出现
in/output打开文件

/data/data/x,/data/app/x,/storage/emulate/0/x

例如 File(cacheDir, "file").createNewFile()

打开数据库文件/dev/ashmem
InputChannel泄露时增加明显anon_inode:[dmabuf]
线程

FD泄漏优化:

  • HandlerThread用完后要关闭(HandlerThread::quitSafely()/HandlerThread::quit())
  • 减少window数量:每增加1个window上涨10个fd
  • 停止无用的线程:1个线程增加1个fd

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com