在我的Android应用程序中,我收到“太多打开文件”的异常。当我做一个lsof时,我会得到一个很长(并且不断增长)的开放管道列表。但是在我的情况下,两个管道端点都在我的应用程序中。另一个奇怪的事情是:在拥有两个管道之前,我总是有一个开放的套接字连接。
07-05 05:22:30.790 W/TAG ( 481): me.app 481 u0_a69 79 ??? ??? ??? ??? socket:[3817]
07-05 05:22:30.790 W/TAG ( 481): me.app 481 u0_a69 80 ??? ??? ??? ??? pipe:[4583]
07-05 05:22:30.790 W/TAG ( 481): me.app 481 u0_a69 81 ??? ??? ??? ??? pipe:[4583]
07-05 05:22:30.790 W/TAG ( 481): me.app 481 u0_a69 82 ??? ??? ??? ??? socket:[4593]
07-05 05:22:30.790 W/TAG ( 481): me.app 481 u0_a69 83 ??? ??? ??? ??? pipe:[4594]
07-05 05:22:30.790 W/TAG ( 481): me.app 481 u0_a69 84 ??? ??? ??? ??? pipe:[4594]
07-05 05:22:30.790 W/TAG ( 481): me.app 481 u0_a69 85 ??? ??? ??? ??? socket:[4600]
07-05 05:22:30.790 W/TAG ( 481): me.app 481 u0_a69 86 ??? ??? ??? ??? pipe:[4601]
07-05 05:22:30.790 W/TAG ( 481): me.app 481 u0_a69 87 ??? ??? ??? ??? pipe:[4601]
我很确定我会关闭所有进程和流。我多次检查了应用程序,然后运行了PMD和FindBugs。我使用HttpUrlConnection进行HTTPS通信,我也非常确定我断开了所有连接,以便可以重用它们。
有没有人知道,那些管道是什么(或者我怎么能找到)?
关于套接字(我不知道是否相关): 当我运行netstat时,我在CLOSE_WAIT状态下获得了很多套接字:
tcp6 0 24 ::ffff:10.83.12.3:39006 ::ffff:62.75.242.64:443 CLOSE_WAIT
tcp6 0 24 ::ffff:10.83.12.3:53782 ::ffff:62.75.242.64:443 CLOSE_WAIT
tcp6 0 24 ::ffff:10.83.12.3:49433 ::ffff:62.75.242.64:443 CLOSE_WAIT
tcp6 0 24 ::ffff:10.83.12.3:41807 ::ffff:62.75.242.64:443 CLOSE_WAIT
tcp6 0 24 ::ffff:10.83.12.3:34892 ::ffff:62.75.242.64:443 CLOSE_WAIT
tcp6 0 24 ::ffff:10.83.12.3:53105 ::ffff:62.75.242.64:443 CLOSE_WAIT
tcp6 0 24 ::ffff:10.83.12.3:44466 ::ffff:62.75.242.64:443 CLOSE_WAIT
如上所述,我在Android端使用HttpUrlConnection。服务器是运行PHP的Apache服务器。 SSL证书有效并从PositiveSSL发出。
这可能是网络问题吗?