当前位置:   article > 正文

Android笔记--FD_android fd

android fd

         这一节了解一下FD(File Descriptor),它是操作系统对打开的文件或者输入/输出设备的引用。在Linux系统中,文件描述符是一个非负整数,用于唯一标识一个打开的文件。Android是基于Linux内核的操作系统,因此在Android开发中也使用文件描述符来标识打开的文件或者设备。文件描述符通常是通过调用系统函数(例如open()、socket()等)获得的,并且在不需要时需要显式地关闭,以释放系统资源,否则可能造成程序内存泄漏。如下:

  1. for(int i=0;i<1024;i++) {
  2. HandlerThread workHandler = new HandlerThread("workHandlerThread");
  3. workHandler.start();
  4. }

会报如下异常:

xxx 'Could not make wake event fd: Too many open files'
  1. for (index in 1 until 1024) {
  2. AlertDialog.Builder(mActivity).show()
  3. }

会报如下异常:

xxx java.lang.RuntimeException: Could not read input channel file descriptors from parcel

轻则app程序退出,严重则会导致设备重启

我们可以通过定期获取对应app的FD信息来预防FD问题,如下:

  1. fun getFd(pid:Int): Int? {
  2. val fdFile = File("/proc/$pid/fd")
  3. return if(fdFile.listFiles() != null) {
  4. fdFile.listFiles()?.size;
  5. } else {
  6. 0
  7. }
  8. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/341388
推荐阅读
相关标签
  

闽ICP备14008679号