suleesulee
suleesulee
suleesulee
전체 방문자
오늘
어제
  • 분류 전체보기 (39)
    • Personal (7)
      • 개발자sulee (2)
      • 회고록 (1)
      • 여행 (0)
    • Computer Science (31)
      • JAVA (4)
      • Python (0)
      • Html&CSS (0)
      • Spring (1)
      • JPA (1)
      • MSA (12)
      • Algorithm (10)
      • DevOps (0)
      • Go (1)
      • Swift (1)
      • 기타 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 개발자 sulee의 블로그입니다.

인기 글

태그

  • 나의 재취업 도전기
  • 네이버
  • 회고
  • 이직
  • MSA
  • 카카오
  • 전문연
  • 라인
  • Monolithic
  • 이직뽀개기
  • 전문연구요원
  • SOA
  • 개발자
  • 백엔드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
suleesulee

suleesulee

Computer Science/JAVA

JVM, GC 살펴보자 2

2021. 9. 9. 12:25

JVM의 Runtime Data Area의 Heap 영역에 대해 알아보자

Heap 영역은

new 연산자로 생성되는 인스턴스, 배열 등을 저장하는 영역으로 GC가 주 타겟으로 삼는 영역이다.

| Eden | S0 | S1 | Old | Permanent |

 

Young Generation

Eden 영역

생성된 객체가 처음 위치하는 영역으로 

Eden 영역에서 GC가 발생한 뒤에도 장기적으로 살아남은 객체들은 S0로 이동된다.

Eden영역이 가득차면 Minor GC가 발생한다.

 

Survivor0, Survivor1 영역

Eden영역에서의 활동과 마찬가지로 MinorGC 발생시 S0영역에서 살아남은 객체들은 S1으로 이동된다.

 

Old / Tenured Generation

Old 영역

S0, S1 영역을 오가는 동안에도 살아남은 객체들이며 aging임계치가 넘어간 것들이 이동되는 영역이다.

Young영역보다 GC가 더 적게 발생하며 이 영역이 가득차면 Full GC가 발생한다. 

 

 

Minor GC 

Young Generation에서 일어나는 GC로 자주 일어나는 GC이다.

자주 발생하는 GC이기 때문에 짧은 시간의 알고리즘으로 이루어 지는게 중요하다. 

(Copy & Scanvenge)

 

Full GC

Old 영역의 참조가 되지 않는 객체를 삭제하는 과정으로 GC 스레드를 제외한 스레드가 멈추며 시간이 오래걸린다.

GC가 완료 후에 중단된 작업을 시작한다.

(Mark & Compact)

* System.gc()를 사용할 경우 Full GC가 발생한다.

 

 

* Permanent영역

JAVA8 버전 이상에서는 없어진 영역이며 Native메모리 영역 내의 Metaspace영역으로 수정되었다.

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'Computer Science > JAVA' 카테고리의 다른 글

JVM, GC 알아보자 3  (1) 2021.09.14
SOLID 5원칙 (좋은 객체지향 설계란.)  (0) 2021.09.07
JVM, GC 살펴보자 1  (0) 2021.09.04
    'Computer Science/JAVA' 카테고리의 다른 글
    • JVM, GC 알아보자 3
    • SOLID 5원칙 (좋은 객체지향 설계란.)
    • JVM, GC 살펴보자 1
    suleesulee
    suleesulee
    IT Engineer, SW Developer, Traveler

    티스토리툴바