본문 바로가기
JAVA

JVM

by 공부 안하고 싶은 사람 2021. 6. 28.
반응형

 

STW 시간 : minor GC < full GC

 

기본적인 GC 방법으로 Minor GC에서 Copy & Scavenge 알고리즘을 사용하고, Full GC에서 Mark & Compact 알고리즘을 사용하는 방법입니다.

 

Copy & Scavenge

Minor GC가 발생하면 Eden과 Survivor1의 활성 객체를 Survivor2로 복사하고, Eden과 Survivor1 영역을 비웁니다.

다음 Minor GC가 발생하면 Eden과 Survivor2의 활성 객체를 Survivor1로 복사하고, Eden과 Survivor2 영역을 비웁니다.

다음과 같은 작업을 반복적으로 수행해 오래된 객체는 Old 영역으로 옮겨지게 됩니다.

Hit(GC에서 살아남은 횟수)가 Tenuring Threshold 만큼 수행된 Object들은 Old 영역으로 이동됩니다.

속도가 비교적 빠르고, 작은 크기의 메모리를 Collecting 하는데 효과적인 알고리즘입니다.

Mark & Compact

전체 객체의 참조를 확인해 참조되지 않은 객체를 표시하고, 표시된 객체의 메모리를 반환하거나 사용하는 객체로 대체하는 알고리즘입니다.

Old 영역은 기본적으로 데이터가 가득 차면 GC를 실행합니다. GC Policy에 따라 어떠한 방식으로 gc를 수행할 것이지가 결정되어 이는 성능에 커다른 영향을 끼치게 합니다.

 


 

Serial Garbage CG

  • 가장 간단, 싱글 쓰레드
  • 마이너, 매이저 GC 올 스탑

 

Parallel GC

  • 멀티 스레드
  • 마이너, 매이저 GC 올스탑

 

CMS GC

  • 백드라운드에서 Old Generation를 주기적으로 비워줌
  • 매이저 GC 빈도수 낮춤
  • 리소스가 많이 필요하며
  • 지속됨 비움으로 메모리 파편화가 심해져 장점이 사라질 수 있다.

 

G1 GC

  • Young은 Parallel/ CMS로 처리
  • Old는 힙영역을 여러 영역으로 나누어 처리
  • Old는 CMS 처럼 백그라운드를 비워줌, Region을 통째로 정리(참조가 없는것은 지우고 ,있는것은 이동)
728x90
반응형

'JAVA' 카테고리의 다른 글

The Java, 코드를 조작하는 다양한 방법  (0) 2021.09.01
String / StringBuffer / StringBuilder  (0) 2021.06.28
SOLID  (0) 2021.06.28
디자인 패턴  (0) 2021.06.28
인코딩 변환  (0) 2021.04.29

댓글