반응형
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
반응형
'JAVA & JVM' 카테고리의 다른 글
Garbage Collection Algorithm(가비지 컬렉션 알고리즘) (0) | 2022.08.30 |
---|---|
JAVA란? (0) | 2022.08.30 |
JAVA의 4가지 기술 (0) | 2022.08.30 |
JVM(Java Virtual Machine)의 정의와 특징, 구조 (0) | 2022.08.30 |
네이티브 메소드 스택(Native Method Stack) 동작 방식 (0) | 2022.08.30 |
댓글