Tag: parallels

Mac OSX上的Java进程不会释放套接字

我经常遇到一个奇怪的问题(实际上经常)。 我正在运行一个服务器应用程序,它为自己绑定一个套接字。 但偶尔,套接字不会被释放。 尽管Eclipse报告Terminate失败,但该过程终止,但它从’ps’和JConsole / JVisualVM正确消失。 ‘lsof’也不再为港口显示任何内容。 但是,当我尝试再次启动服务器到同一端口时,我收到此错误: Caused by: java.net.BindException: Address already in use at sun.nio.ch.Net.bind(Native Method) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59) 这个问题在我的unit testing中是最糟糕的,它永远不会完全运行,因为这肯定会在其中一个测试之后发生(所有测试都会重新创建服务器)。 我正在运行MacOSX 10.7.3 Java(TM)SE运行时环境(版本1.6.0_31-b04-415-11M3635)Java HotSpot(TM)64位服务器VM(版本20.6-b01-415,混合模式) 我也有Parallels,而且问题看起来似乎是由Parallels网络适配器引起的,但我不确定它是否与此问题有任何关系(我已经联系了他们的支持,目前为止没有任何帮助)。 唯一有助于解决这种情况的是重启OSX。 有任何想法吗? – 这是打开套接字的相关代码: channel = (ServerSocketChannel) ServerSocketChannel.open().configureBlocking(false); channel.socket().bind( addr, 0 ); 它被关闭了 channel.close(); 但是我认为这个过程会被卡住,然后Eclipse会杀死它。 – netstat -an(对于端口6007): tcp4 73 0 127.0.0.1.6007 127.0.0.1.51549 ESTABLISHED tcp4 0 […]