Open longlivedrgn opened 4 months ago
GC는 메모리 관리 기법 중 하나로, 힙이 많이 사용될 때 이를 비우는 작업입니다. 많은 리소스가 사용되어서 GC가 동작하면 유저에게 렉을 유발할 수 있습니다.
이건 잘 모르겠네요. 이유와 배경... 선택한 배경을 물어본다는 게, 선택할 수 있었다는 것인데 그 역사는 잘 모르겠네요.
유추하기로 GC는 위에서 언급한 것처럼 한번에 많은 리소스를 사용하여 유저에게 나쁜 경험을 주는 측면이 있기도 하고요. 실제로 GC를 사용하는 언어들이 인스턴스를 메모리에 어떻게 유지시키는지 모르기 때문에 상상력을 발휘하면, 타이밍이 엇갈려서 Dangling pointer가 생길 수 있다면 크래시가 나거나 엑셉션을 잡아야 하는데 이것도 좀 골 때리는 일이 될 수 있을 것 같고요. 그렇다면 메모리 관리를 시스템에 맡긴 게 무용지물이 된 측면이 존재하는 것 같습니다.
이런 상상을 배경으로, 또 제가 실제로 ARC를 사용한 경험으로, ARC가 사실상 대부분의 일은 시스템이 하면서도 일부 책임을 엔지니어가 가지고 있는데, 이게 물론 문제가 되는 상황도 발생하지만, 확실히 더 유연하게 메모리를 관리할 수 있고 맥락이 명시적이 되어서 좋은 것 같네요.