가비지 컬렉터의 장점과 단점에 대해 설명해주세요.
장점
- 프로그래머가 직접 메모리를 해제하지 않아도 되므로, 실수로 인해 메모리가 해제되지 않아 발생하는 문제를 방지할 수 있음
- 더 이상 참조되지 않는 객체를 메모리에서 제거하므로, 잘못된 메모리에 접근하는 것으로 발생하는 오류를 방지
- 위 두 가지를 통해 메모리 누수를 방지하고 에러를 방지하여 프로그램의 안정성이 기여
단점
- 프로그램이 실행되는 동안 GC도 실행되기 때문에, GC가 이루어지는 동안 일시적인 프로그램의 중단이 있을 수 있음
- 해당 중단으로 인해 실시간으로 정보가 반영되어야 하는 프로그램의 경우 문제가 될 수 있음
- GC가 동작하기 위한 추가 메모리 할당이 필요해 보다 많은 메모리 공간을 요구
해결책
- 단점으로 인해 발생하는 문제 중 프로그램의 일시적인 중단을 줄이기 위해서는 GC의 발생을 최소화하는 것이 중요
GC의 발생을 줄이는 방법
- 자주 생성/소멸되는 객체를 재활용
struct사용 (구조체는 힙 영역이 아닌 스택 영역에 저장되므로 GC의 영향 받지 않음)
- 지나치게 큰 객체의 사용을 최소화