2012-01-17 54 views

回答

12

有一組被認爲總是可以訪問的「根對象」:例如,線程引用,靜態變量,類引用。如果某些對象無法通過這些根對象的引用鏈接到達,則認爲它可用於GC,即使對該對象有一些引用。

0

GC算法的細節依賴於Java的實現,因此它取決於您的VM。但大多數虛擬機不使用引用計數。官方虛擬機甚至有幾種可配置的算法可用。所以這很難概括。

3

GarbageCollector基於Java內存模型工作。在java中可用的應用程序內存分爲兩部分:堆棧和堆棧。一個對象存儲在堆內存中,可以通過兩種方式訪問​​: - 對象可以具有存儲在堆棧內存中的引用變量。在這種情況下,可以通過使用它的引用變量直接訪問對象。

2)對象可以由任何其他對象被包含,並且不會有在堆棧存儲器中的任何引用。在這種情況下,只能使用該容器對象訪問此對象。所以如果容器對象是垃圾回收,那麼這個對象必須符合垃圾回收的條件。

雖然做垃圾回收GarbageCollector檢查一個對象是否是在棧提供任何引用直接或間接訪問的,如果是,那麼它不會收集這些對象否則做收集。