검색결과 리스트
Heap에 해당되는 글 1건
- 2021.07.01 java 8 정리11
글
java 8 정리11
Java 정리
2021. 7. 1. 20:25
인프런 강의 13일차.
- 더 자바, Java 8 (백기선 강사님)
* Metaspace
- JVM의 여러 메모리 영역 중에 PermGen 메모리 영역이 없어지고 Metaspace 영역이 생겼다.
* Heap 영역 구조
- Young generation(=Eden)
- 객체 대부분이 생성될 때 이곳으로 들어간다.
- 이곳이 가득차면 minor gc가 발생한다.
- minor gc가 발생하면 살아있는 객체들만 체크하고 나머지는 다 없애버린다.
- 살아남은 객체들 중 더 오래 쓸 것 같은 것들은 tenured generation으로 옮긴다.
- Old generation (=tenured generation)
- 이곳이 가득 차면 major gc가 발생한다.
- major gc는 minor gc보다 더 오래 걸린다.
- Permanent generation
- Class의 Meta 정보나 Method의 Meta 정보, Static 변수와 상수 정보들이 저장되는 공간으로 흔히 메타데이터 저장 영역이라고도 한다. 이 영역은 Java 8 부터는 Native 영역으로 이동하여 Metaspace 영역으로 변경되었다.
- 다만, 기존 Perm 영역에 존재하던 Static Object는 Heap 영역으로 옮겨져서 GC의 대상이 최대한 될 수 있도록 하였다
# 기본적인 JVM 구조
+---------+-----+-----+-------------------+ +------+
| Eden | S 0 | S 1 | Tenured | | Perm |
+---------+-----+-----+-------------------+ +------+
<- Young Generation -> <- Old Generation ->
<---------------- Total Heap Size -------->
* Java 7 Hotsop JVM 구조
# Java 7 Hotspot JVM 구조
<---- Java Heap ------> < Permanent Heap > < Native Memory >
+------+---+---+-------+------------------+--------+--------+
| Eden | S | S | Old | Permanent | C Heap | Thread |
| | 0 | 1 | | | | Stack |
+------+---+---+-------+------------------+--------+--------+
* Java 8 Hotspot JVM 구조
# Java 8 Hotspot JVM 구조
<---- Java Heap ------> <--------- Native Memory ---------->
+------+---+---+-------+------------------+--------+--------+
| Eden | S | S | Old | Metaspace | C Heap | Thread |
| | 0 | 1 | | | | Stack |
+------+---+---+-------+------------------+--------+--------+
* Java Heap: JVM이 관리하는 영역
* Native Memory: OS에서 관리하는 영역
* GC 범위
+------+---+---+------------------+ +--------+
| Eden | S | S | Tenured | | Perm |
| | 0 | 1 | | | |
+------+---+---+------------------+ +--------+
<- Young Gen -> <--- Old Gen ----> <------->
Minor GC Full GC Full GC
<-------------- GC 대상 범위 ---------------->
1. PermGen
- permanent generation, 클래스 메타데이터를 담는 곳.
- Heap 영역에 속함
- 기본값으로 제한된 크기를 가지고 있음.
- -XX:PermSize=N, PermGen 초기 사이즈 설정
- -XX:MaxPermSize=N, PermGen 최대 사이즈 설정
2. Metaspace
- 클래스 메타데이터를 담는 곳.
- Heap 영역이 아니라, Native 메모리 영역이다.
- 기본값으로 제한된 크기를 가지고 있지 않음. (필요한 만큼 계속 늘어난다)
- Java 8부터는 PermGen 관련 java 옵션은 무시한다.
- -XX:MetaspaceSize=N, Metaspace 초기 사이즈 설정
- -XX:MaxMetaspaceSize=N, Metaspace 최대 사이즈 설정
'Java 정리' 카테고리의 다른 글
Singleton 패턴, JAVA에서의 응용과 이해 (4) | 2024.01.29 |
---|---|
java 8 정리10 (0) | 2021.06.30 |
java 8 정리9 (0) | 2021.06.17 |
java 8 정리8 (0) | 2021.06.02 |
java 8 정리7 (0) | 2021.05.26 |