TeamCoook / iOSInterviewQuestions

✅ iOS 개발자 기술 면접 대비
18 stars 0 forks source link

[레벨 0] `7주차` 13. iOS에서 자동 참조 카운팅(ARC)과 가비지 컬렉션(Garbage Collection)의 차이점에 대해 설명해주세요. #13

Open longlivedrgn opened 4 months ago

longlivedrgn commented 4 months ago
SunnnySong commented 4 months ago

1️⃣ 가비지 컬렉션의 동작 원리와 장단점에 대해 설명해주세요.

Garbage Collection, 가비지 컬렉션

장점

단점

2️⃣ iOS에서 가비지 컬렉션을 사용하지 않는 이유와 ARC를 선택한 배경에 대해 설명해주세요.

ohdair commented 4 months ago

블로그 기재

soo941226 commented 2 months ago

가비지 컬렉션GC의 동작 원리와 장단점에 대해 설명해주세요.

GC는 메모리 관리 기법 중 하나로, 힙이 많이 사용될 때 이를 비우는 작업입니다. 많은 리소스가 사용되어서 GC가 동작하면 유저에게 렉을 유발할 수 있습니다.

iOS에서 가비지 컬렉션을 사용하지 않는 이유와 ARC를 선택한 배경에 대해 설명해주세요.

이건 잘 모르겠네요. 이유와 배경... 선택한 배경을 물어본다는 게, 선택할 수 있었다는 것인데 그 역사는 잘 모르겠네요.

유추하기로 GC는 위에서 언급한 것처럼 한번에 많은 리소스를 사용하여 유저에게 나쁜 경험을 주는 측면이 있기도 하고요. 실제로 GC를 사용하는 언어들이 인스턴스를 메모리에 어떻게 유지시키는지 모르기 때문에 상상력을 발휘하면, 타이밍이 엇갈려서 Dangling pointer가 생길 수 있다면 크래시가 나거나 엑셉션을 잡아야 하는데 이것도 좀 골 때리는 일이 될 수 있을 것 같고요. 그렇다면 메모리 관리를 시스템에 맡긴 게 무용지물이 된 측면이 존재하는 것 같습니다.

이런 상상을 배경으로, 또 제가 실제로 ARC를 사용한 경험으로, ARC가 사실상 대부분의 일은 시스템이 하면서도 일부 책임을 엔지니어가 가지고 있는데, 이게 물론 문제가 되는 상황도 발생하지만, 확실히 더 유연하게 메모리를 관리할 수 있고 맥락이 명시적이 되어서 좋은 것 같네요.