dart gc 2

[세미나] 각 언어별 가비지 컬렉션의 동작 방식

오늘 제가 이야기해 볼 주제는 가비지 컬렉터 입니다. 개발일을 하면서 가비지 컬렉터에 대해 많이 들어보셨을 거고, 대충 어떤 일을 하는 애 인지 알고 계실거에요. 가비지 컬렉터는 쉽게 말해 메모리에 굳이 남아있을 필요없는 쓰레기들을 주워가는 쓰레기 콜렉터죠. 우리가 쓰는 언어들 대부분 가비지 컬렉터가 구현되어 있어서 굳이 이걸 왜 알아야할까 싶기도 합니다. 우리가 가비지 컬렉터를 알아야 하는 이유는 명확합니다.가비지 컬렉터의 작동 방식을 이해하면 메모리 누수나 성능 저하, 오버플로우와 같은 문제를 미리 예방할 수 있기 때문입니다. 메모리 관리에 소홀하게 되면 정말 크나큰 문제가 생기기도 하는데, 극단적인 사례가 하나있습니다. 1996년 '아리안 5'라는 로켓 하나가 폭발하게 됩니다. 유럽도 인간을 우주에..

다트의 가비지 컬렉터 어떻게 동작할까?

해당 글은 공식문서와 chatGPT의 약간의 도움을 받아 작성되었습니다. (고마워 따봉 chatGPT야) 플러터 팀에서 초기 언어를 선택할 때 12개 이상의 언어를 선택해 평가하였다고 한다. 플러터는 다트를 선택하였는데, 플러터가 다트를 선택한 주요 이유들 중 하나는 바로 다트가 lock(앱이 실행이 중지되는 상태)없이 가비지 컬렉션을 수행할 수 있다는 점이였다. 많은 언어에서 가비지 컬렉션이 메모리를 수집하는 동안 lock 상태가 된다고 한다. 하지만 다트는 항상 가비지 컬렉션을 lock 없이 수행할 수 있다는 점에서 플러터 팀의 선택을 받은 것.. 그럼 다트의 가비지 컬렉터는 어떻게 lock 없이 가비지 컬렉션이 동작을 할까? Dart의 가비지 컬렉터는 두 개의 세대(generation)로 구성된다...

Weekly Flutter 2023.03.02