Q
方法和垃圾收集
0
A
回答
3
嗯,這取決於 - 只要沒有更多的「實時」引用,就有資格進行垃圾回收。如果你在方法中做了某些事情,這意味着方法結束後仍然有活動引用,那麼不行 - 該對象將不符合垃圾回收的條件。例如:
public class Test
{
private Object field;
public void foo()
{
field = new Object();
}
public Object getField()
{
return field:
}
}
// Elsewhere
Test t = new Test();
t.foo();
Object x = t.getField();
在foo()
創建的對象肯定是不符合垃圾收集時foo()
已經完成 - 畢竟,我們希望它的下一行代碼獲取!
1
假設對該對象的引用沒有交給其他方法,當方法退出時仍然在範圍內,那麼是的。
9
當沒有對象的引用或者引用它的每個對象也被垃圾收集時,對象可以被垃圾收集。
public int getThing() {
Object o = new Object();
return 5;
}
這裏,Ø可以是方法後收集垃圾,因爲沒有指向它。
Object o = null;
public int getThing() {
o = new Object();
return 5;
}
這不能,因爲其他的事情還是可以參考Ø因爲它是一個類成員。
public Object getThing() {
Object o = new Object();
return o;
}
這裏不能,因爲它被返回。如果呼叫者堅持,它仍然活着。
如果有人有指向它的指針,它會保持活動狀態(大致)。
1
我想添加到上面的答案唯一的事情是,只要有一個強從一個不符合條件的對象內引用它,對象不符合垃圾回收的條件。
有一些弱引用(和其他一些類型的東西)使對象指向可收集對象,即使引用本身仍然存在。你可以看到WeakHashMap和相關的更多信息。
相關問題
- 1. 垃圾收集器和finalize()方法
- 2. 垃圾收集
- 3. 垃圾收集YGCT和垃圾收集時間不斷上升
- 4. JVM垃圾收集算法
- 5. Java垃圾收集算法
- 6. 垃圾收集在產量的方法
- 7. Java垃圾收集器方法
- 8. Renderscript和垃圾收集器
- 9. 垃圾收集和存儲
- 10. 垃圾收集和反射
- 11. 垃圾收集和回調
- 12. 垃圾收集和jQuery?
- 13. Java垃圾收集和空
- 14. 結構和垃圾收集
- 15. 指針和垃圾收集
- 16. 垃圾收集java
- 17. DoctrineCommonCache垃圾收集?
- 18. Java垃圾收集
- 19. 垃圾收集器
- 20. C#垃圾收集
- 21. Java垃圾收集
- 22. WeakEvent垃圾收集
- 23. GWT垃圾收集
- 24. Java集合和垃圾收集
- 25. 垃圾收集器和彈簧集成
- 26. 垃圾收集:將對象收集
- 27. 垃圾收集是由
- 28. 垃圾收集提交git
- 29. 從垃圾收集日誌
- 30. 垃圾收集緩存WeakMaps
答案取決於比你的問題中陳述的更多的東西。面試官可能正在等待你詢問相關問題 - 他們想知道你對垃圾收集有多少了解,這可以根據你問他們的回答來確定。 – 2009-11-02 21:23:53
是的,只要它沒有被「根路徑」引用,即它沒有被另一個不可終結的對象引用。 – rsp 2009-11-02 21:38:06