2011-12-04 66 views
3

Java中的垃圾收集器是否僅用於從堆內存中清除未使用的對象,還是它實際上也可以幫助您清理堆棧內存?Java垃圾收集器是否清理堆棧內存?

+0

你不能把東西放在垃圾收集器可以清除的堆棧上。 – svens

+0

@svens實際上不是真的--JIT會在堆棧上分配對象(如果可能的話),但顯然堆棧中的GC沒有任何意義 - 這將如何工作? – Voo

回答

6

生活在堆棧上的唯一東西是引用和基本類型的實例。這兩個都被垃圾收集器忽略。

7

堆棧上沒有垃圾。

0

它的對象沒有一個可以清理的線程堆棧的強大參考。

2

垃圾回收只發生在堆上,不再從GC roots引用的對象。

堆棧是您的本地變量(如基元和對象引用)存在的地方。這裏沒有GC的概念。考慮堆棧數據結構。如果一個局部變量在特定線程的堆棧幀的範圍內,它會被推送到這個堆棧幀,當它超出範圍時,它將被移出堆棧幀。