2013-05-30 94 views
-1

我創建了一個Java對象來從數據庫中查詢數據。當我得到結果和過程後,我不再需要這個對象。我也沒有在我的代碼中將對象引用設置爲null。垃圾收集器是否將此對象視爲清理?如果垃圾收集器不清理,這種情況會在系統中產生任何類型的內存泄漏?Java內存不足問題

+0

關閉連接,它會沒事的。 –

+2

如果您正在查詢數據庫,則可能使用JDBC,這意味着您在完成操作後必須關閉所有資源(ResultSet,Statement,Connection)。你呢? – nos

+0

作爲一般規則,當對象不存在更多硬引用時,Java對象就有資格進行垃圾回收。如果您持有對該對象的引用,則不會收集該引用,除非該引用位於另一個符合收集條件的對象中。 –

回答

5

我們無法分辨這些信息。

如果你已經創建了一個局部變量,使用它並且沒有做任何其他的事情,那麼一旦它超出範圍,它就可以用於垃圾收集。例如,如果它是一個方法中的變量,那麼一旦該方法返回,它的引用不再被垃圾收集器計入活動狀態。 (當然,你可以在別的地方再次引用同一個對象)。

另一方面,如果您有一個實例變量,只要該對象的實例處於活動狀態,它就會保留其對象。當然,如果你已經將參考存儲在一個靜態變量中,那麼只要程序運行,它就可能停留在周圍。

+0

謝謝。上面的解釋是有道理的。 – EVS