我們有一個基於Java NIO實現的http服務器。 它運行在Java版本爲「1.6.0_20」的Ubuntu 10.04.2 LTS上。運行環境(build 1.6.0_20-b02) Java HotSpot™服務器虛擬機(內部版本16.3-b01,混合模式)Java NIO導致文件描述符泄漏
但是,它泄漏文件描述符,它們都是unix域套接字。
當使用命令「netstat -anp」時,我們可以發現該進程只打開兩個unix域套接字。 但是,使用lsof -p時,我們可以發現有大量文件描述符是unix域套接字,並且具有與在netstat中找到的相同的設備值和節點值。
我檢查了我們的代碼,並且所有的SocketChannel都正常關閉。
這是Sun JDK的bug嗎? 我們該如何解決它?
你有沒有試過Java 6 update 26?如果它是一個JVM錯誤,它可能已被修復,這將顯示它是一個錯誤。 –
@James您使用哪種NIO API將Java與Unix域套接字一起使用?你是否使用了像XNIO這樣的特定API?我正在尋找能夠與Unix Domain Sockets和NIO一起工作的東西。謝謝。 – jbx