2012-05-13 54 views
2

可能重複:
What is the garbage collector in Java?Java的垃圾收集器如何工作?

在我的計劃,我已經建立了一個功能,在一定時間後調用另一個函數(我們將其設定爲20分鐘,這個例子的目的)使用ScheduledThreadPoolExecutor

被調用的功能,我們會說是removeStat(Character char)。在該方法中,它引用了側面字符中的函數(我們會說char.getClient().getWriter())。我們假設在20分鐘等待期間,有問題的角色退出並且不再需要他們的Character實例。

那時Java垃圾收集器會刪除Character類,導致removeStat中的char爲空,還是知道要等到調用完成?

+0

笑不知道這是諷刺與否,但歡迎您無論哪種方式;) – jmort253

+1

@ jmort253 - 這PuppyKevin回去,並接受了答案,可能意味着它是真誠的。 :) –

+0

恩,夥計們。這不是一個騙局。至少不是相關的問題。這有一個關於垃圾收集和callables和scheduledthreadpoolexeutor的具體問題......鏈接的問題是關於GC的一般問題。 – vidstige

回答

5

垃圾收集器(包括Java的)都足夠聰明,你不必擔心這一點。垃圾收集器不會垃圾收集任何東西,直到所有對它的引用都消失爲止。如果對象仍然可以訪問,它仍然存在。

+0

所以,讓我們說的不是20分鐘定時器,我用的時間瘋狂量(我們會做到7天) - 我仍然不會擔心對象會空? – PuppyKevin

+0

這是正確的。如果你仍然可以得到它,它仍然存在。它不關注你訪問對象的頻率。它注意是否仍然可以訪問它。任何其他事情都有可能破壞某人的代碼(就像你的代碼一樣)。 –

+0

但是,您可能不得不擔心所有這些未使用但仍然引用的字符的內存不足。 –