Java應用程序可能使用IO流,套接字或數據庫連接,這些連接在不再需要時應該關閉。Java應用程序在終止時使用的資源是否已釋放?
但是,應用程序可能會終止(例如通過終止進程)。在這種情況下,所有使用的資源是否會被釋放?誰會釋放他們:操作系統還是JRE?
Java應用程序可能使用IO流,套接字或數據庫連接,這些連接在不再需要時應該關閉。Java應用程序在終止時使用的資源是否已釋放?
但是,應用程序可能會終止(例如通過終止進程)。在這種情況下,所有使用的資源是否會被釋放?誰會釋放他們:操作系統還是JRE?
如果您的軟件不照顧資源管理不當,會發生以下情況:
正如瓦肯所提到的,這些都不能確保它們在另一端正確處理。
請注意,第3項重點是一個相當通用的事情:大多數操作系統都會照顧到這一點,它不涉及Java平臺的內部。這是關於OS自己管理其流程和資源的操作系統。
參見:
JVM將在終止時釋放所有活動資源;然而,這並不能確保另一端也將釋放資源,因此明確關閉資源是每個程序員最感興趣的。
在Java 7中存在明確關閉流的替代方法,稱爲try-resource「語句」,這相當於在try塊之後關閉finally
塊中的資源。更多的信息可以在here找到。
我認爲他們會被釋放用於訪問資源的庫,以及是否不會發生n,然後是JRE。 – Hassan
這是一個非常廣泛的問題。當進程終止時,JVM初始化的任何東西都將被釋放,但是這並不能保證連接的另一端(例如)將釋放它們的資源。 –