2013-07-16 38 views
-1

garbage collector是否需要heap?那麼方法區呢?我知道垃圾收集器,它從內存的堆區域中刪除垃圾。垃圾收集器只需要在堆中工作嗎?

+1

什麼是「方法區域」?您是否有對定義此術語的JVM規範的引用? – parsifal

+0

如果通過「方法區域」表示代碼所在的位置,則代碼不會被垃圾收集,直到整個類爲止,這就要求類加載器作爲一個先決條件是可收集的。如果你指的是執行方法的堆棧框架,除了基元和引用之外什麼也沒有,所以根本沒有垃圾收集。總之你的問題沒有意義。 – EJP

回答

1

方法區被清理時自動調用棧中彈出時的方法的退出

2

的方法框架這不是必要,它只能在堆上。但它在堆棧中運行沒有任何意義(或者,正如你所說的,「方法區域」)。方法返回後,堆棧中分配的內存將被釋放。

所以,考慮到這個,你想要什麼垃圾回收器在堆棧中?雖然理論上你可能希望它以一種非常長時間運行的方法釋放內存,但在絕大多數情況下,該方法在垃圾回收器開始查看之前就會返回。電腦速度很快。另外,如果你用長時間運行的方法來保存數據,無論如何都有可能引用它。