OOM: Out Of Memory & GC 가비지 컬렉터, YGC/FGC

동민·2021년 5월 25일
0

GC: Garbage Collector, YGC/FGC

Java는 Young 영역Old 영역으로 메모리를 분할하는데, 신규로 생성되는 객체는 Young 영역에 보관, 오래 살아있는 객체는 Old 영역에 보관한다.

Young 영역Eden, S0, S1 영역으로 구분되는데, 신규 생성 객체는 Eden 영역에 보관되고 Eden 영역이 100% 차게 되면 사용하지 않는 객체는 제거, 사용되는 객체는 S0 영역으로 이동한다. 이를 마이너 GC라고 칭함.

다시 Eden 영역이 100%가 되면 Eden 영역S0 영역에서 사용하지 않는 객체는 제거, 남은 객체를 S1 영역으로 이동시킨다. (마이너 GC)

S1 영역에서도 살아남는다면 Old 영역으로 이동한다.

Old 영역이 100%가 되면 메이저 GC (Full GC) 가 발생한다. 이 때, JVM의 동작을 멈추고 Old 영역의 메모리를 정리하게 된다.

메이저 GC가 발생하면 프로그램의 동작이 멈추기 때문에 큰 이슈가 발생할 수 있다.

OOM: Out Of Memory, GC 모니터링

OOM, Out Of Memory 에러는 JAVA GC 가비지 컬렉터가 정상적으로 작동하지 않아 발생하는 에러로 Heap 힙 메모리가 가득 찼을 때, 발생하여 서버에 부하를 주게 된다.

위와 같은 상황 발생 시, GC 모니터링을 수행해야 한다.

$ jstat [유틸옵션] [PID] [반복 출력 시간] 

# PID 129의 정보를 1초(1000)마다 반복 출력 
$ jstat -gcutil 129 1000
  • jstat 명령어 활용!

참고

https://118k.tistory.com/817

https://d2.naver.com/helloworld/6043

profile
BE Developer

0개의 댓글