簡體   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