我有一個名爲abc.txt的文件。方法級別資源(例如:FileInputStream,Connection)未關閉,對象是否有資格進行垃圾回收,資源是否會關閉?
我由通過到其的連接:
的FileInputStream FS =新的FileInputStream( 「的abc.txt」);
這位於方法級別。
如果我不關閉連接,對象是否有資格進行垃圾回收?
資源是否會關閉?
程序範例:
class Hello {
public void readFile(){
FileInputStream fs = new FileInputStream("abc.txt");
/*
here i wont close the connection
*/
}
}
class Demo {
public static void main(String args[]) {
Hello h = Hello();
h.readFile();
/*
Some other operation
*/
}
}
方案2:在主方法I取消引用小時。
class Demo {
public static void main(String args[]) {
Hello h = Hello();
h.readFile();
h = null;//Dereference
}
}
現在是這個h對象有資格進行垃圾回收。 (注意:資源連接沒有關閉)
一般經驗法則,如果你打開,你必須關閉它。由於資源可能包含對其他不符合垃圾回收條件的對象的引用,因此無法100%確定該資源是否會被關閉。 – MadProgrammer 2015-03-19 03:33:28