我们有一个基于Java NIO实现的HTTP服务器。
它运行在Ubuntu 10.04.2 LTS上,使用的是Java版本“1.6.0_20”。
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode)
然而,它泄漏了文件描述符,这些文件描述符都是Unix域套接字。
当我们使用命令"netstat -anp"时,我们发现该进程只打开了两个Unix域套接字。但是,当我们使用"lsof -p"命令时,我们会发现有大量的文件描述符,它们都是Unix域套接字,并且与在netstat中找到的那个具有相同的设备值和节点值。
我已经检查了我们的代码,所有的SocketChannels都被正确关闭了。
这是Sun JDK的一个bug吗?我们应该如何修复它?
然而,它泄漏了文件描述符,这些文件描述符都是Unix域套接字。
当我们使用命令"netstat -anp"时,我们发现该进程只打开了两个Unix域套接字。但是,当我们使用"lsof -p"命令时,我们会发现有大量的文件描述符,它们都是Unix域套接字,并且与在netstat中找到的那个具有相同的设备值和节点值。
我已经检查了我们的代码,所有的SocketChannels都被正确关闭了。
这是Sun JDK的一个bug吗?我们应该如何修复它?