GC(Garbage Collector)는 프로그램에서 더 이상 사용되지 않는 메모리를 자동으로 회수하는 메모리 관리 시스템이다. 가비지 컬렉터는 주로 동적 메모리 할당을 사용하는 프로그래밍 언어, 예를 들어 C#, Java 등에서 사용된다. 개발자가 메모리를 수동으로 관리하지 않아도 되도록 도와주어, 메모리 누수나 불필요한 메모리 사용을 방지하는 역할을 한다.
객체가 더 이상 사용되지 않으면, 그 객체에 할당된 메모리를 회수하여 다른 객체들이 사용할 수 있도록 한다.
개발자가 명시적으로 메모리를 해제하지 않아도, 가비지 컬렉터가 불필요한 객체를 자동으로 감지하여 메모리를 회수한다.
프로그래머가 메모리 해제를 놓친 경우(예: 객체를 참조하는 변수를 제대로 null 처리하지 않았을 때), 가비지 컬렉터가 이를 처리하여 메모리 누수가 발생하지 않도록 한다.
가비지 컬렉터는 프로그램에서 객체의 참조 관계를 추적한다. 만약 객체가 더 이상 참조되지 않으면, 그 객체는 가비지로 간주되어 회수 대상이 된다.
가비지 컬렉터는 객체가 여전히 참조되고 있는지를 추적한다. 객체가 다른 객체에 의해 참조되지 않으면 그 객체는 "쓰레기"가 되어 가비지 컬렉터가 이를 회수한다.
가비지 컬렉터는 일정 주기로 실행되며, 메모리 부족을 감지하거나, 백그라운드에서 자동으로 실행된다.
가비지 컬렉터는 참조되지 않는 객체를 찾아 메모리에서 제거하는 작업을 한다.
대부분의 객체는 힙 영역에 할당되며, 가비지 컬렉터는 이 힙 영역을 주기적으로 스캔하여 참조되지 않는 객체를 정리한다.
메모리 관리 자동화: 프로그래머가 직접 메모리를 관리하지 않아도 되므로, 코드가 간결하고 안전해진다.
메모리 누수 방지: 객체가 더 이상 필요 없을 때 자동으로 메모리를 회수하여 메모리 누수 문제를 예방한다.
객체의 생명 주기 추적: 객체가 참조되는 시점에 따라 메모리 할당과 회수를 자동으로 처리한다.
예측 불가능한 동작: 가비지 컬렉터가 언제 실행될지 예측할 수 없기 때문에, 실시간 시스템이나 성능이 중요한 시스템에서는 문제가 될 수 있다.
성능 이슈: 가비지 컬렉터가 동작하는 동안 프로그램의 실행이 잠시 멈추거나 성능이 저하될 수 있다. 이를 Stop-the-World 현상이라고 한다.
이 모든 과정을 실행하는 동안 프로그램의 다른 코드가 동시에 실행되면 정확한 참조 상태를 알 수 없기 때문에, 가비지 컬렉터는 다른 모든 스레드의 실행을 멈추게 하고 작업을 처리한다.
가비지 컬렉터는 메모리 관리의 자동화를 통해 프로그래밍을 더 안전하고 간단하게 만들지만, 그 동작이 예측할 수 없고 때때로 성능에 영향을 미칠 수 있다는 점에서 주의가 필요하다.
와우 기수님,,,하나하나 이렇게 정성스럽게 준비하셨던 거구나! 그래서 저 순찌와 제우스와 감튀교주가 날먹하는 게 싫었던 거구나!! 난 그 마음을 이해해버렸어,,,!! 역시 기수짱 믿고 있었다구!! 주말 동안 보스 몬스터 공격 구현해 주실거져?? 난 기수짱 믿고 있음,,ㅇㅇ