본문 바로가기
JAVA & JVM

(~JDK1.7)Heap 메모리 구조와 특징, (JDK1.8)변화된 Heap 구조(Meta Space)

by 샤워하다돌면워싱턴 2022. 8. 30.
반응형

 

Heap 구조

 

  • Eden
    객체들이 최초로 생성되는 공간입니다.
  • Survivor
    Eden에서 참조되는 객체들이 저장되는 공간입니다.
*object의 age는 살아남은 횟수를 의미. minor GC 때 garbage가 되어 사라지지 않고 survivor area로 이동한 횟수를 의미한다.
age를 object header에 기록. 32번째 promotion이 일어난다. 
Object Layout 때문에 object header 중 첫 번째에 age를 기록하는 부분이 있고, 6bit로 되어있다. 이 수치는 32개밖에 표현하지 못한다. 
그렇기 때문에 0부터 카운트를 시작하는 age는 31까지만 기록이 가능한 것이다.
 
  • Old
    Eden 과 Survivor에서 마저 지워지지 않고, 살아남은 객체들이 저장되는 공간입니다.
  • Permanent
    생성된 객체들의 정보를 가리키는 주소 값이 저장된 공간입니다.
    클래스와 메소드등의 메타정보를 저장하는 영역이다. 리플렉션을 사용하여 동적으로 클래스가 로딩되는 경우에 사용. 
    -Xms, -Xmx에서 말하는 Heap 영역에서는 제외된다.
① Class의 Method(바이트 코드 포함)
② Class의 이름
③ 상수 풀 정보
④ 객체 배열 및 클래스와 연결된 유형 배열
⑤ JVM에 의해 생성된 내부 객체
⑥ 컴파일러의 최적화에 사용되는 정보
 
Permanent 의 문제점    ->     Permanent Area가 가득차서 OOM(Out Of Memory) 발생 가능
① Static Object의 남용
② Class와 Method의 증가  
 
기존 대응방안
Permanent을 적절히 늘립니다.
정기적인 재구동
 
변화된 Heap Area From Java 8...

 

 
 
Permanent Area vs Metaspace Area
 

 

 

반응형

댓글