iOS 최종 버전 Apple에서는 Objective-C 용 자동 참조 계산 기능을 구현했지만 작동으로 이해하지 못합니다.자동 참조 횟수가 가비지 수집기로 작동합니까?
답변
자동 참조 횟수는 정상 표기 규칙에 따라, 컴파일 시간에 당신을 위해 코드에 retain
및 release
메시지를 삽입합니다. 컴파일러가 당신을 위해 그 비트를 작성할 수있을 정도로 똑똑하고 실수를 할 가능성이 훨씬 적은 것을 제외하고는 직접 메모리 관리를 수동으로 수행 한 것과 같습니다.
가비지 수집이 아니기 때문에 (매우 간단한) 정적 분석과 비슷합니다. 또한 Catfish_Man에 의해 제기 된주의 사항에 따라 여전히 압도적으로 결정론적인 메모리 관리와 런타임 비용의 전반적인 변화는 거의 없습니다.
런타임 비용의 변경은 정확하지 않습니다. 컴파일러는 객체 수명에 대해 인간보다 훨씬 보수적이어야하며, 일반적으로 refcount 변동폭이 약 20 % 더 커집니다. 반면에 ARC는 많은 경우에 자동 리사이징을 피하기 위해 수행하는 간단한 트릭을 가지고있어 메모리 사용을 줄이고 성능을 향상시킬 수 있습니다. 성과가 있는지 여부는 문제의 정확한 코드에 달려 있습니다. –
좋은 지적. 나는 내 대답을 토닝했고 당신의 코멘트에 대한 명백한 언급을했다. – Tommy
@ 토미 : "100 % 결정적"이라고 말하면서 "ARC는 전체 계산 내역을 변경하는 방식으로 작업 순서를 변경하고 제거 할 수 있습니다"라고 말합니다. http://clang.llvm.org/docs/AutomaticReferenceCounting.html#optimization –
자동 참조 계산은 Objective-C 객체 및 블록에 대한 자동 메모리 관리를 구현하므로 프로그래머가 명시 적으로 유지 및 릴리스를 삽입 할 필요가 없습니다. 사이클 수집기를 제공하지 않습니다. 사용자는 명시 적으로 수명을 관리해야합니다.
이 사양 읽기 - Automatic Reference Counting
- 1. C++ 가비지 수집 및 순환 참조 데이터
- 2. 얼마나 많은 참조 횟수가 증가합니까?
- 3. D 가비지 수집기가 작동합니까?
- 4. 참조 횟수가 0 인 객체가 여전히 지속됩니다.
- 5. 자동 가비지 수집
- 6. 자동 가비지 수집 - BeginLifetimeScope
- 7. Java의 가비지 수집기는 어떻게 작동합니까?
- 8. 가비지 수집 메커니즘은 어떻게 작동합니까?
- 9. Java에서 가비지 수집은 어떻게 작동합니까?
- 10. 가비지 컬렉터는 PHP에서 어떻게 작동합니까?
- 11. C# 가비지 컬렉터 교차 참조
- 12. 가비지 수집 및 참조 C#
- 13. 자동 참조 계산 작동하지
- 14. Python의 가비지 수집은 클래스 메소드와 어떻게 작동합니까?
- 15. Go 컴파일러 (gc)에서 가비지 수집이 작동합니까?
- 16. IDispose가 필요합니다. 루프 끝에서 가비지 컬렉터가 작동합니까?
- 17. 경고 "호출자가이 시점에서 소유하지 않은 개체의 참조 횟수가 잘못 지정됨"
- 18. shared_ptr이 참조 횟수가 0에 도달하면 멤버 함수를 호출하는 방법
- 19. "호출자가이 시점에서 소유하지 않는 개체의 참조 횟수가 잘못 지정됨"
- 20. 참조 횟수가 0으로 떨어지면 얼마나 빨리`__del__`이 호출됩니까?
- 21. 발신자가이 시점에서 소유하지 않은 개체의 참조 횟수가 잘못 지정됨
- 22. iPad에서 발신자가이 시점에서 소유하지 않은 개체의 참조 횟수가 잘못 계산되었습니다.
- 23. Python C API, 새로운 객체에 대한 참조 횟수가 높습니다.
- 24. 가비지 수집
- 25. 가비지 수집은 어떻게 자체 참조 객체를 수집합니까?
- 26. 대형 순환 참조 및 JVM 가비지 컬렉터
- 27. 자체 참조 사용자 데이터 및 가비지 수집
- 28. IOS에서 자동 참조 비활성화
- 29. malloc + 자동 참조 계산?
- 30. 자동 참조 계산 혼동
[문서보기] (http://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html)를 사용해 보셨습니까? 또는 [다른 문서] (http://www.google.com/url?sa=t&source=web&cd=1&ved=0CCQQFjAA&url=http%3A%2F%2Fclang.llvm.org%2Fdocs%2FAutomaticReferenceCounting.html&ei=1iaXTriaLcnPiALP_azDDQ&usg=AFQjCNHBcQAROrz81zpnzFhm8tW7ApG47g)? –
또는 여기를 검색하는 방법은 무엇입니까? http://stackoverflow.com/questions/6385212/how-does-the-new-automatic-reference-counting-mechanism-work –
도움을 주셔서 감사합니다. 여러 페이지의 문서를 읽지 않고도 명확한 정보를 얻을 수 있습니다. 그렇지 않으면 stackoverflow에 질문 할 이유가 없습니다 ... – ADIMO