Java 应用程序可能使用在不再需要时应关闭的 IO 流、套接字或数据库连接。
然而,应用程序可能会被终止(例如通过终止进程)。在这种情况下是否会释放所有使用的资源?谁将释放它们:OS 还是 JRE?
Java 应用程序可能使用在不再需要时应关闭的 IO 流、套接字或数据库连接。
然而,应用程序可能会被终止(例如通过终止进程)。在这种情况下是否会释放所有使用的资源?谁将释放它们:OS 还是 JRE?
JVM 将在终止时释放所有活动资源;但是,这并不能确保另一端也会释放资源,因此明确关闭资源符合每个程序员的最大利益。
Java 7 中存在一种显式关闭流的替代方法,称为 try-resource “语句”,相当于在finally
try 块之后关闭块中的资源。更多信息可以在这里找到。
如果您的软件没有正确处理资源管理,则会发生以下情况:
正如 Vulcan 所提到的,显然,这些都不能确保它们在另一端得到妥善处理。
请注意,第 3 个要点是相当通用的事情:大多数操作系统都会处理这个问题,它与 Java 平台的内部结构无关。它是关于操作系统自己管理其进程和资源的。
也可以看看: