개발놀이터

면접 준비 : GC (Garbage Collection) 본문

CS 지식/면접준비

면접 준비 : GC (Garbage Collection)

마늘냄새폴폴 2022. 7. 14. 17:47

Q. GC가 무엇이고 필요한 이유는 뭔가요?
A. GC는 힙 영역에서 사용하지 않는 객체들을 제거하는 작업을 총칭합니다. 이 객체를 제거하는 작업이 필요한 이유는 자바는 개발자가 메모리를 직접 해제해줄 수 없는 언어이기 때문입니다. 따라서 객체를 사용하고 제거하는 기능이 필요하게 됩니다. 

Q. GC의 동작방식에 대해 설명해주세요
A. GC의 동작방식은 가장 간단한 Serial GC 방식으로 설명합니다. GC는 Minor GC, Major GC로 구분할 수 있습니다. Minor GC는 young한 영역에서, Major GC는 old한 영역에서 일어난다고 정의합니다. GC를 수행할 때는 GC를 수행하는 스레드 이외의 스레드는 모두 정지합니다. 이를 Stop-the-world라고 합니다. Minor GC는 Eden 영역이 가득 차면, Eden 영역에서 참조가 남아있는 객체를 마킹하고 survivor 영역으로 복사합니다. 그리고 Eden 영역을 비웁니다. survivor영역도 가득 차면 같은 방식으로 다른 survivor 영역에 복사하고 비웁니다. 이를 반복하다보면 계속해서 살아남는 객체는 old 영역으로 이동하게 됩니다. Major GC는 old 영역에서 일어납니다. Minor GC와는 반대로 삭제되어야 하는 객체를 마킹합니다. 그리고 지웁니다. 메모리는 단편화 된 상태이므로 이를 한 군데에 모아주어야 합니다. 메모리를 한군데 모아주는 것을 Compaction이라 하며 Compact라고 합니다. 그래서 Mark-Sweep-Compact 알고리즘이라고 합니다. 이것이 중요한 이유는 GC 수행시 시스템이 멈추기 때문에 의도치 않은 장애의 원인이 될 수 있습니다. 따라서 이를 위해 힙 영역을 조정하는 것을 GC 튜닝이라고 하고 이때, JVM메모리는 절대 마음대로 조정해서는 안됩니다. 

"GC의 동작방식에 대해 설명해주세요" 에서 이어지는 질문
Q1. GC의 알고리즘 중에 더 알고있는 것이 있나요?
A. Mark and Sweep 알고리즘과 Mark and Copy 알고리즘이 있습니다. 

Q2. Mark-Sweep-Compact 알고리즘이 필요한 이유가 뭔가요? / 단편화 된 메모리를 한군데에 모아줘야하는 이유가 있나요?
A. GC를 수행 후 구멍이 뚫린것처럼 힙 영역에 빈 공간이 생기게 됩니다. 이때 GC가 삭제한 메모리의 크기 역시 제각각 이기 때문에 혹여나 빈 공간보다 더 큰 크기의 객체가 들어오려 하면 OutOfMemoryError가 생깁니다. Mark-Sweep-Compact 알고리즘을 사용하면 조각난 메모리 공간을 하나로 합쳐주어 에러가 생기지 않게 해줍니다. 

"GC의 알고리즘 중에 더 알고있는 것이 있나요?" 에서 이어지는 질문
Q. 각각의 알고리즘이 어떤 역할을 하나요? 
A. Mark and Sweep 알고리즘은 GC가 GC Root 그래프를 훑으면서 참조가 남아있는 객체에는 마킹을 참조가 남아있지 않은 객체는 지우는 역할을 합니다. Mark and Copy 알고리즘은 프로그램이 GC에 의해 중단되는 시간을 줄여주는 역할을 합니다. 

 

https://coding-review.tistory.com/125

 

GC (Garbage Collector)

GC의 정의 GC는 Garbage Collector의 약자로 힙 영역에서 사용하지 않는 객체들을 제거하는 작업을 총칭한다. 이 객체를 제거하는 작업이 필요한 이유는 자바는 개발자가 메모리를 직접 해제해줄 수

coding-review.tistory.com

 

'CS 지식 > 면접준비' 카테고리의 다른 글

면접 준비 : 제네릭  (0) 2022.07.17
면접 준비 : 컬렉션 프레임워크  (0) 2022.07.16
면접 준비 : JVM  (0) 2022.07.14
면접 준비 : 프록시 패턴  (0) 2022.07.08
면접 준비 : 데코레이터 패턴  (0) 2022.07.07