게임 개체의 HashMap이 있습니다. 각 Game 객체에는 HashMap of Players와 Moves 목록이 있습니다. 게임이 끝나면 맵에서 제거하고 싶습니다. 게임 개체를 제거하기 전에 플레이어를 비우고 목록을 이동시켜야합니까? 아니면 GC가 처리할까요?) 당신은 아무것도 할 필요가 없습니다자바 가비지 콜렉션 문제
답변
게임 개체에서 Players HashMap을 참조하고 게임이 끝나고지도에서 제거하는 경우 플레이어 맵은 게임에서 참조 되었기 때문에 제거됩니다. 게임에 대한 참조가 다음 손실되면, 그들은 외부 게임 오브젝트
에서 참조 할 경우 게임에서 언급 된 모든 오브젝트도 손실됩니다 그럼 우리가 예를 사용하여이 이해 할 수
.- 우리는 문 클래스와 문이있을 것이다 방 클래스
- 방을 가지고 있고 그것은 방 없이는 존재할 수 없습니다.
는 Room
객체가 생성 될 것입니다, 우리는 Room room = new Room()
을 쓸 때 우리가이 코드 여기
public class Room {
Door door = new Door();
public static void main(String[] args) {
Room room = new Room();
room = null;
}
}
를 보자, 그리고 Door
그것을 위해 인스턴스 변수이기 때문에하는 door
도 만들어집니다. door
은 room.door
을 사용하는 방에서 참조됩니다. 현재 room
에 액세스 할 수 있으며 door
에 방을 통해 액세스 할 수 있습니다. 따라서 door
개체는 room
을 통해 참조를 갖습니다.
이제 room = null
을 실행하면 Room
개체에 대한 참조가 손실됩니다. Door
개체는 Room
을 통해서만 참조되므로이 참조가 손실되었습니다. room = null
으로 room.door
에 액세스 할 수 없습니다. Room room = new Room();
실행 될때 첫번째 이미지는 상태를 도시
다음과 같이
이
는 개략적으로 지칭된다. 문에 대한 참조가 있습니다.두 번째 이미지는 room = null
이후의 상태를 나타냅니다. 점선은 참조가 유실되었음을 나타냅니다. 이제 Room
에 대한 참조가 손실되고 분명히 door
에 대한 참조도 손실됩니다. 이 시점에서
...두 개체 모두 가비지 수집 대상이됩니다.
,
그래, 그는 죄송 초보자 질문이 있습니다.
전체 개체 그래프가 루트가있는 개체로 참조되지 않는 한 GC는 모든 것을 자동으로 수집합니다.
뿌리 개체는 수집 할 수 없도록 보장되는 개체입니다. – 정적 필드 또는 모든 스레드의 활성 스택 프레임에 의해 참조되는 개체입니다.
'루트 개체'란 무엇입니까? 나는 GC가 어딘가에 여전히 참조가있는 것을 만지지는 않을 것이라는 것을 알고있다. 그래서 당신은 단순히 다른 참조가 있다는 것을 의미 하는가? – ducin
@tkoomzaaskz : 참조하는 것이 자체로 수집 가능한 경우 둘 다 수집됩니다. 내 편집을 참조하십시오. – SLaks
"뿌리 박은"상태의 좋은 묘사가 확실하지 않습니다. 모든 스레드에서 더 이상 액세스 할 수없는 객체는 가비지 수집 대상입니다. 이러한 오브젝트가 액세스 할 수없는 다른 오브젝트를 참조하면 전체 오브젝트 그래프가 적합합니다. 이러한 객체 그래프는 "Isolation of Islands"라고 불립니다. – Brabster
- 1. 자바 가비지 콜렉션
- 2. PhoneGap 가비지 콜렉션
- 3. C로 구현 된 인터프리터에서 가비지 콜렉션 문제
- 4. Perl XS 가비지 콜렉션
- 5. 자바 가비지 콜렉션 유도 지연이 성능에 영향을줍니다.
- 6. 자바 가비지 콜렉션 및 임시 객체
- 7. 자바 스크립트 패턴 및 가비지 콜렉션
- 8. 자바 단편 오브젝트 및 가비지 콜렉션
- 9. Java : 가비지 콜렉션
- 10. Java 가비지 콜렉션 5
- 11. 가비지 콜렉션 - 루트 노드
- 12. Java 가비지 콜렉션
- 13. Android - 가비지 콜렉션 감지
- 14. android에서 가비지 콜렉션 이해하기
- 15. Java : 가비지 콜렉션
- 16. 가비지 콜렉션 시간 줄이기
- 17. 가비지 콜렉션 매개 변수
- 18. 파이썬 스레드 가비지 콜렉션
- 19. Ruby의 가비지 콜렉션 디버깅
- 20. JS 가비지 콜렉션
- 21. Haxe 가비지 콜렉션 통지
- 22. 가비지 콜렉션 - Java
- 23. Java 클러스터링에서 가비지 콜렉션
- 24. OnTrimMemory하지만 Android에서 가비지 콜렉션 없음
- 25. lapply에서 가비지 콜렉션 속도 향상
- 26. HBase MemStore 및 가비지 콜렉션
- 27. Perl 그래프 가비지 콜렉션 사용
- 28. 가비지 콜렉션 시간이 매우 길다.
- 29. 생성 된 코드의 가비지 콜렉션 복사
- 30. 런타임 생성 코드의 Java 가비지 콜렉션
당신의 노력에 감사합니다 :) – ducin
내 기쁨 ... 도와 드리겠습니다. –