我知道,如果我這樣做InputStreams是GCed
copyFromInToOut(new FileInputStream(f1), new FileOutputStream(f2));
System.gc();
它將在那些FileInputStream
的磨合的GC,關閉它們。但是,如果我做
copyFromInToOut(new BufferedInputStream(new FileInputStream(f1)), new BufferedOutputStream(new FileOutputStream(f2));
System.gc();
是否有任何危險,即FileOutputStream中會GCed在之前的BufferedOutputStream,不會造成緩衝區刷新? 我無法調用flush,close,因爲這需要更多的步驟。它首先涉及聲明一個緩衝輸入流,傳遞,然後調用close。或者我可以安全地做到這一點?
你爲什麼試圖做垃圾收集器的工作? – 2010-10-13 21:55:53
你爲什麼不願意採取「比這更多的步驟」? – erickson 2010-10-13 22:14:18
您是否有實際證據證明垃圾收集器是A)在您的流正在使用時收集流?和B)關閉你的流?爲什麼你的流甚至有資格使用GC - 線程是否在執行處理程序,然後可能是流程終結器方法被調用。 – Justin 2010-10-13 22:18:13