Java应用程序终止时是否释放了其使用的资源?
Java应用程序可能会使用IO流、套接字或数据库连接,当不再需要这些连接时,应该关闭这些连接Java应用程序终止时是否释放了其使用的资源?,java,memory-management,connection,Java,Memory Management,Connection,Java应用程序可能会使用IO流、套接字或数据库连接,当不再需要这些连接时,应该关闭这些连接 但是,可以终止应用程序(例如,通过终止进程)。在这种情况下,是否会释放所有已使用的资源?谁将释放它们:OS还是JRE?JVM将在终止时释放所有活动资源;然而,这并不能确保另一端也会释放资源,因此显式关闭资源符合每个程序员的最佳利益 Java7中存在一种显式关闭流的替代方法,称为try-resource“语句”,它相当于在try块之后关闭finally块中的资源。有关这方面的更多信息,请参见。如果您的软件
但是,可以终止应用程序(例如,通过终止进程)。在这种情况下,是否会释放所有已使用的资源?谁将释放它们:OS还是JRE?JVM将在终止时释放所有活动资源;然而,这并不能确保另一端也会释放资源,因此显式关闭资源符合每个程序员的最佳利益
Java7中存在一种显式关闭流的替代方法,称为try-resource“语句”,它相当于在try块之后关闭
finally
块中的资源。有关这方面的更多信息,请参见。如果您的软件不能正确管理资源,将发生以下情况:
- 在运行时:如果打开的流看起来未使用(在垃圾收集周期中),JVM将在程序运行期间尝试关闭这些流
- 在程序的终止点:JVM应该关闭程序留下的各种打开的流
- 在JVM的进程终止点:当JVM存在时,操作系统将负责释放JVM未正确释放的任何内容(希望如此,或者此操作系统有一些严重问题…)
- ,也在StackOverflow上
- ,在IBM开发者系列上