我有一个Java程序,其中有一个无限监听的服务器套接字。
如果JVM通过kill pid异常退出,系统资源和套接字对象会发生什么情况?套接字会被释放还是会被锁定?
在JVM异常退出的情况下,如何处理系统资源(如文件描述符/网络套接字/JDBC连接)的清理最佳方式?
我知道有finalizers和finally,但使用终结器存在一定的不确定性和性能下降。
请提供一些想法。
我有一个Java程序,其中有一个无限监听的服务器套接字。
如果JVM通过kill pid异常退出,系统资源和套接字对象会发生什么情况?套接字会被释放还是会被锁定?
在JVM异常退出的情况下,如何处理系统资源(如文件描述符/网络套接字/JDBC连接)的清理最佳方式?
我知道有finalizers和finally,但使用终结器存在一定的不确定性和性能下降。
请提供一些想法。
当JVM退出时,系统资源例如内存、文件描述符和网络套接字会被释放。由于网络协议需要时间关闭与网络套接字的连接,因此连接到网络套接字将需要一段时间才能关闭。
一旦数据库意识到连接的另一端已关闭,JDBC连接应该被释放。保持活动状态的定时器可以更快地清理连接。数据库将清理打开的事务,并在清理连接时释放锁定。