繁体   English   中英

Java应用程序终止使用时是否释放了资源?

[英]Are resources used by a Java application freed when it terminates?

Java应用程序可能使用IO流,套接字或数据库连接,这些不再需要时应关闭它们。

但是,应用程序可能会终止(例如,通过终止进程)。 在这种情况下,将释放所有使用的资源吗? 谁将释放它们:OS或JRE?

JVM将在终止时释放所有活动资源。 但是,这不能确保另一端也可以释放资源,因此明确关闭资源符合每个程序员的最大利益。

Java 7中存在一种显式关闭流的替代方法,称为try-resource“ statement”,它等效于在try块之后在finally块中关闭资源。 有关更多信息,请参见此处

如果您的软件无法适当地进行资源管理,则会发生以下情况:

  • 在运行时:如果您看似未使用打开的流(在垃圾回收周期中),则JVM将在程序执行期间尝试关闭它们。
  • 在程序的终止点: JVM应该关闭程序留下的各种打开的流,
  • 在JVM的进程终止点:操作系统将负责释放JVM存在时未正确释放的任何内容(希望是,否则此OS会出现严重问题...)。

正如瓦肯(Vulcan)所提到的那样,显然,这一切都不能确保妥善处理它们。

请注意,第三个要点是相当普通的事情:大多数操作系统都会处理这一点,并且与Java平台的内部结构无关。 这是关于操作系统自行管理其流程和资源的信息。

更多信息

也可以看看:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM