1
在Java中,當我們關閉像Connection這樣的資源時,FileInputStream和FileOutputStream與將這些對象實例設置爲null的方式不同?即在這兩種情況下,這些對象都有資格進行垃圾收集。那麼爲這些類提供close
方法的目的是什麼?關閉FileInputStream並將其設置爲null的區別
在Java中,當我們關閉像Connection這樣的資源時,FileInputStream和FileOutputStream與將這些對象實例設置爲null的方式不同?即在這兩種情況下,這些對象都有資格進行垃圾收集。那麼爲這些類提供close
方法的目的是什麼?關閉FileInputStream並將其設置爲null的區別
IO類的close
方法通常用於執行清理任務,例如,關閉文件處理程序,沖洗和關閉套接字。這些清理任務純粹與分配無關,GC本身無法處理它們。
此外,一基準設定到null
顯式聲明該對象將不再被使用是不是推薦的編碼實踐。當物體不再可用時,GC將自動處理這些情況。明確的null
設置只會混亂你的源代碼。
許多在線教程/文章之一會回答這個問題。 –
'#close()'不是垃圾收集。 http://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html#close() –
我想,如果你不關閉它,那麼如果你嘗試寫再次打開在GC之前,您可能無法打開它,直到GC發生,因爲操作系統認爲該文件已打開。 – chuthan20