스파르타 내일배움캠프 유니티 7기
면접 질문 모음
가비지 컬렉터는 더이상 사용하지 않는 메모리를 자동으로 탐지하고 해제하여 메모리 누수를 방지하고, 개발자가 직접 메모리를 관리할 필요 없이 안정적으로 동작할 수 있도록 돕는 시스템이다.
장점
개발자가 동적으로 할됭된 메모리 전체를 관리할 필요가 없어지고, 불필요한 객체를 자동으로 해제해서 메모리 누수를 줄인다.
단점
가비지 컬렉션이 수행되는 정확한 시점을 알 수 없다. GC가 실행될때 성능 저하가 발생할 가능성이 있다.
성능저하 이유
1. GC가 발생할때 Stop-The-World 현상 발생
2. 이 현상은 프로그램의 모든 스레드를 일시적으로 중단시킨다.
3. 이 중단은 오버헤드를 일으키고, 성능 저하의 원인이 될 수 있다.
힙 영역에 할당된 메모리들은 0, 1, 2세대 세가지로 구분된다.
가장 처음 생성된 객체는 0세대에 속하며, 가비지 컬렉션이 실핼될 때 살아남은 객체는 다음 세대로 넘어간다.
가비지 컬렉션은 0 세대부터 수행되며, 0 세대 수집은 0세대 객체만을 대상으로 메모리를 해제한다.
필요 시 1세대, 2세대 까지 확정하여 수집이 진행될 수 있다.
대부분의 객체가 수명이 짧다는 특성을 활용하여, 짧은 생존 주기의 객체만 자주 검사함으로써 가비지 컬렉션의 오버 헤드를 줄이는 전략이다.
박싱/언박싱은 힙 할당과 값 복사 과정을 추가로 발생시켜 자주 하게되면 성능이 저하될 가능성이 있다.
언박싱 시 타입이 맞지않으면 예외가 발생한다. 반드시 정확한 타입으로 언박싱 해야한다.
박싱된 객체가 많아지면 힙 사용량이 늘어 가비지 컬렉터가 자주 동작할 수 있다.