1
A
답변
2
오브젝트 포인터의 값은 0 => 개체
1
가비지 콜렉션의 두 가지 형태의 마크 & 스윕, 또는 참조 카운팅되어 미사용 (도달)이다.
대부분의 현대 언어는 여러 가지 방법의 조합 또는 변형을 사용합니다. 이것은 각 계획의 일반적인 개념을 다룰 것입니다.
또한 탈출 분석은 "쓰레기"의 양을 "줄이기"위해 사용됩니다.
이 "표시"부울 하나의 매개 변수으로, 모든 오브젝트를함으로써 작동.
- 메모리 공간 내의 모든 객체를 "거짓"으로 표시하는 것으로 시작합니다.
- 상위 "글로벌"개체에서 시작하여 해당 하위 개체에 대해 "true"로 표시합니다.
- 각 하위에 대해이를 "true"로 표시합니다. 원래 "false"였던 각 하위 클래스에 대해이 단계를 반복하십시오. (재귀)
- 마지막으로 "false"로 모든 개체를 삭제하십시오. (아마도 나중에) 이후 1의 과정을 반복
때 그것의 조사는 0에 도달한다.
- 오브젝트/var가 작성되어 전역/기타 오브젝트에 추가 될 때. 참조 카운트는 1 씩 증가합니다.
- 오브젝트/var가 전역/상위 오브젝트에서 제거되면. 참조 카운트가 1 씩 감소합니다.
- 제거 후 객체 참조 횟수가 0 인 경우 아무도
이 실행 코드를 분석하여, 쓰레기의 양을 "감소"하는 데 사용되는 추가 방법 "는 소유하지 않습니다"으로는 "쓰레기 수집"입니다. 임시 변수의 경우 함수 실행 후 "영구"이되지 않습니다. 그런 다음이 객체/변수는 함수 실행 후 즉시 지워집니다. 가비지 수집 시스템에 개체를 추가 할 필요가 없습니다 (오버 헤드가 있음). 이 단계는 많은 현대 언어의 성능을 보장하는 데 중요합니다.
Detailed advantages/disadvantages of Mark & Sweep/Reference Counting can be found on wiki
관련 문제
- 1. 가비지 콜렉션 - 루트 노드
- 2. 가비지 콜렉션 시간 줄이기
- 3. 자바 가비지 콜렉션 문제
- 4. Java : 가비지 콜렉션
- 5. 자바 가비지 콜렉션
- 6. Java 가비지 콜렉션 5
- 7. PhoneGap 가비지 콜렉션
- 8. Java 가비지 콜렉션
- 9. Android - 가비지 콜렉션 감지
- 10. android에서 가비지 콜렉션 이해하기
- 11. Perl XS 가비지 콜렉션
- 12. Java : 가비지 콜렉션
- 13. 파이썬 스레드 가비지 콜렉션
- 14. Ruby의 가비지 콜렉션 디버깅
- 15. JS 가비지 콜렉션
- 16. Haxe 가비지 콜렉션 통지
- 17. 가비지 콜렉션 - Java
- 18. Java 클러스터링에서 가비지 콜렉션
- 19. OnTrimMemory하지만 Android에서 가비지 콜렉션 없음
- 20. lapply에서 가비지 콜렉션 속도 향상
- 21. HBase MemStore 및 가비지 콜렉션
- 22. Perl 그래프 가비지 콜렉션 사용
- 23. 가비지 콜렉션 시간이 매우 길다.
- 24. 콜렉션 정렬 매개 변수 별 linq 쿼리
- 25. Nodejs 콜렉션/어레이 매개 변수 복원
- 26. 실시간 시스템에서 Java 가비지 콜렉션 제어
- 27. 가비지 수집 YGCT 및 가비지 콜렉션 시간이 계속 증가합니다.
- 28. 생성 된 코드의 가비지 콜렉션 복사
- 29. 자바 가비지 콜렉션 유도 지연이 성능에 영향을줍니다.
- 30. Lua C++ 클래스 바인딩 가비지 콜렉션 해제
없습니다. 그러나 GC가 ['GC.KeepAlive']와 같은 것을 사용하여 객체를 처리하는 방법에 영향을 줄 수 있습니다 (http://stackoverflow.com/questions/7295195/how-to-use-gc-keepalive-and-for-what-purpose) 또는 C# ['fixed'] (http://msdn.microsoft.com/ko-us/library/vstudio/f58wzh21 % 28v = vs.110 % 29.aspx) 문을 사용하십시오. 두 가지 모두 실제 컬렉션이 수행되는 것을 막지는 않지만 특정 동작을 변경하는 것입니다 (자세한 내용은 링크를 참조하십시오). –