2012-07-08 5 views

답변

0

일반적으로 더 좋습니다. 컴파일러가 가비지를 처음부터 두지 않는 코드를 생성 할 수있는 이유는 무엇입니까? ARC는 가비지 수집기가없는 가비지 수집의 메모리 관리 편리 성을 제공합니다.

+2

그건 잘못되었습니다. ARC는 코드의 여러 위치에서 * atomic * 연산을 산재시킵니다. 그건 비싸요. 이 문제에 관한 여러 논문을 읽으면 GC가 우수한 CPU 사용률을 달성 한 것에 대한 합의를 확인할 수 있습니다. 메모리 사용량은 너트가 일부를 믿을만큼 나쁘지는 않습니다. 나는 전에 화가 난 기사를 썼다. http://taylanub.github.io/webapps-js-gc/ 애플은 자신의 프레임 워크에 깊이 뿌리 내렸기 때문에 refcounting 가능성이 가장 높다. – TaylanUB

+0

필자는'-retain'과'-release'가 과거 중요한 성능 문제로 떠오른 것을 기억하지 못합니다. 문제가 있음을 나타내는 측정 값이 있습니까? ARC는 개발자가 메모리를 관리하기 위해 이전에했던 것과 똑같은 일을합니다. 단, 코드를 컴파일 할 때 자동으로 수행합니다. 나는이 대답을지지하지만, 자신의 견해에 오신 것을 환영합니다 - 메모리 관리에 대해 "분노 할 이유가 없습니다". Apple의 경우 : * 프로세서 *를 두 번 이상 전환하고 작동하는 GC가 있습니다. 프레임 워크 문제로 인해 ARC를 선택하게 된 것은 의심 스럽습니다. – Caleb

+1

저는 자신감이 뛰어나고 은색 판에 제시된 그릇된 주장을하는 사람들에게 가장 화를냅니다. 그리고 그들이 실수로 지적한 실수를 바로 잡기를 거부합니다. 나는 그 페이지에 대해 비판하고있다. 그러나 다중 스레드 환경에서 RC가 * atomic * 연산을 사용하여 코드를 낭비해야한다는 것을 알지 못하고 RC가 순환 구조를 처리 할 수 ​​없다는 것을 무시하면 (일반적으로 더 낫다는 것과 같은 단순한 주장을하는 것은 좋지 않습니다. 클로저/"블록"의 사용) 프로그래머 도움없이. 어느 쪽도 분명히 좋지 않습니다. 특히 일반적으로는 그렇지 않습니다. – TaylanUB

관련 문제