2014-06-19 1 views
0

런타임 중에 개체 object1이 개체 object2을 참조하고 있습니다. 그러나 object1에는 참조가 없습니다.개체의 Java GC가 "체인"이 느슨한 경우

object1 따라서 object2은 GC로 수집 할 수 있습니까?

예인 경우 - object2에 대한 참조가 있고이 경우 메모리에서 "자동으로" 이 제거됩니다.

object2에 대한 참조가 있으므로 (object1)이며 그 이유는 수집되지 않기 때문입니다. 그렇지만 object1은 느슨한 것이므로 수집해야합니다.

GC는 어떻게 작동합니까? 그것은 object1을 수집하나요? 메모리에 "느슨한"원인이 있습니다. 다음 라운드에서 object2을 수집합니다. 참조되지 않았기 때문에 느슨해 졌기 때문입니다. 또는 object1을 수집 할 때 object1object2을 모두 수집합니까?

또 다른 경우는 다음과 같습니다. object1이 (가) 프로세스를 실행 중입니다. 따라서 GC는이를 만지지 않으며 object2 (참조 번호는 object2)은 메모리에 으로 남아 있습니다. 하지만 이건 아닐거야. 내가 알기 론, GC는 객체 에 CPU 시간 (?)이 할당되어 있는지 여부를 조회하지 않고 그냥 참조로 가고, 참조가 없다면 이 제거 될 때마다 힙의 오브젝트

GC는이 두 개체에서 어떻게 작동합니까? object1 & object2이 경우에는 어떻게됩니까?

// ========================================

편집 :

이것은 GC의 특성에 대한 질문입니다. 누구나 "GC는 참조되지 않은 개체를 수집합니다."를 찾을 수 있습니다.

TIA. 모두 object1object2들이 아니다 "이후 수집 -

+0

'object2'에 대한 다른 _reachable_ 참조가있을 수 있습니다. 그래서'object1'은 수집 될 수 있지만'object2'는 남겨질 것입니다. –

답변

0

당신은 힙에있는 모든 오브젝트만큼 개체와 참조를 혼합하는이 라이브 참조가 GCed되지 않습니다이

관련 문제