일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- T5004
- extender
- 전송매체
- 리눅스패키지
- 프로토콜
- 무선에이전트
- java
- 패킷
- 유선에이전트
- apache2.4
- Hotspot JVM HEAP
- oracle jdk
- Java Virtual Machine
- 유니캐스트
- N704
- 멀티캐스트
- A1004
- jdk 7
- #네트워크기초
- WebServer
- 아이피타임
- 이지메시
- Hotspot JVM
- easy mesh
- jdk8
- PermSize
- 아파치 설치
- 커널파라미터
- MetaSpaceSize
- 네트워크 용어
- Today
- Total
J_Log
Hotspot JVM Heap 구조 본문
Hotspot JVM Heap 구조는 크게 Young Generation과 Old Generation으로 나누어져 있다.
- Young Generation은 Eden 영역과 Survivor 영역으로 구성되는데 Eden 영역은 Object가 Heap에 최초에 할당되는 장소이며 Eden 영역이 꽉차게 되면 Object의 참조 여부를 따져서 만약 참조가 되어있는 살아있는 Object면 Survior영역으로 넘기고 참조가 끊어진 Garbage Object이면 그냥 남겨 놓는다. 모든 Live Object가 Survivor 영역으로 넘어가게 되면 Eden 영역을 모두 정리한다.
- Survivor 영역은 말그대로 Eden 영역에서 살아남은 Object들이 잠시 머무르는 곳이고, Survivor 영역은 두개로 구성(Survivor1, Survivor2)되는데 Live Object를 대피시킬 때는 하나의 Survivor 영역만 사용하게 된다.
- Young Generation에서 Live Object로 오래 살아남아 성숙된 Object는 Old Generation으로 이동하게 되는데 여기서 성숙된 Object란 의미는 애플리케이션에서 특정 횟수 이상 참조되어 기준 Age를 초과한 Object를 의미한다. 비교적 오랫동안 참조가 되어 이용되고 있고, 앞으로도 계속 사용하게될 확률이 높은 Object들을 저장하는 영역이다.
- Perm 영역은 보통 Class의 Meta 정보나 Method의 Meta 정보, Static 변수와 상수 정보들이 저장되는 공간으로 흔히 메타 다이터 저장영역이라고도 한다.
- JAVA 7 버전과 8 버전의 구조적인 변경사항이 있다.
- 최근 Java 8 에서 JVM 메모리 구조적인 개선사항으로 Peam 영역이 Metaspace영역으로 전환되고 기존의 Perm 영역은 사라지게 되었다. Metaspace 영역은 Heap 영역이 아닌 Native 메모리 영역으로 취급하게됨.
(Heap 영역은 JVM에 의해 관리된 영역이며, Native 메모리는 OS 레벨에서 관리하는 영역으로 구분 됨)
- Metaspace가 Native 메모리를 이용함으로서 개발자는 영역 확보의 상한을 크게 의식할 필요가 없다.
- JVM 메모리 구조 개선에 따른 JAVA 옵션 변경에 따른 설정 변경은 아래와 같음
JAVA7 : -XX:PermSize=256m -XX:MaxPermSize=256m
JAVA8 : -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m
'JAVA > JVM' 카테고리의 다른 글
IBM JDK와 Hotspot JDK의 차이점 (0) | 2023.07.01 |
---|