가비지 컬렉션(Garbage Collection)은 프로그램에서 더 이상 사용되지 않는 메모리 공간을 자동으로 해제하는 기술이다.
이 기술은 메모리 관리를 자동으로 처리하여 프로그래머가 수동으로 메모리를 해제할 필요가 없도록 돕는다.
가비지 컬렉션은 프로그램이 실행되는 동안 메모리를 효율적으로 관리하고, 메모리 누수를 방지하는 데 중요한 역할을 한다.
가비지 컬렉션은 일반적으로 참조 추적 또는 마크-스윕(Mark-Sweep) 알고리즘을 사용하여,
더 이상 사용되지 않는 객체를 찾아 메모리에서 해제한다.
참조 추적(Reference Counting):
마크-스윕(Mark-Sweep) 알고리즘:
압축(Compaction):
성능 저하 : 가비지 컬렉션이 백그라운드에서 동작하면서 잠깐의 성능 저하를 초래할 수 있다.
예측 불가능한 실행 시간 : 가비지 컬렉션이 언제 실행될지 예측하기 어려워, 실시간 시스템에서 문제가 될 수 있다.
메모리 사용 증가 : 가비지 컬렉션이 메모리 추적과 관리에 추가적인 자원을 소모하므로, 전체적인 메모리 사용량이 증가할 수 있다.
Swift에서는 ARC(Automatic Reference Counting)라는 방식으로 가비지 컬렉션을 구현하고 있다.
ARC는 객체의 참조 카운트를 추적하여, 객체가 더 이상 필요 없을 때 자동으로 메모리를 해제한다.
가비지 컬렉션은 메모리 관리의 복잡성을 줄여 주고, 프로그램의 안정성을 높이는 중요한 기술이다.
자동으로 메모리 해제를 처리함으로써 메모리 누수 문제를 예방할 수 있지만,
성능 저하나 예측 불가능한 동작이 있을 수 있어 이를 고려하여 적절하게 관리하는 것이 필요하다.