JVM Garbage Collector 관련 변화
- JVM의 여러 메모리 영역중 PermGen 메모리 영역이 없어지고 MetaSpace영역이 생겼다.
PermGen (permanent generation)
- 클래스 메타데이터를 담는 곳(클래스 이름, 스태틱한 필드 정보 등)
- Heap 영역에 속함
- Heap영역에 Eden 영역(young-genration 만든지 얼마 안된 객체), Old 영역(만든지 오래된 객체), PermGen 영역이 있음
- 기본값으로 제한된 크기를 가지고 있음
- -XX:PermSize=N : PermGen 초기 사이즈 설정
- -XX:MaxPermSize=N : PermGen 최대 사이즈 설정
- PermGen영역은 항상 고정된 크기를 가지고 생성되는데,
클래스 로딩을 많이 하거나 동적으로 클래스를 많이 생성하는 경우 펌젠 영역이 꽉 차는 경우가 있다. - 꽉 차면 GC가 정리하는데, 그래도 계속 차서 정리가 되지 않으면 메모리 exception이 발생한다.
MetaSpace
- 클래스 메타데이터를 담는 곳(클래스 이름, 스태틱한 필드 정보 등)
- Heap 영역이 아니라, Native 메모리 영역이다.
- 기본값으로 제한된 크기를 가지지 않는다. 필요한 만큼 계속 늘어난다.
- 자바8부터 PermGen 관련 java 옵션은 무시된다.
- -XX:MetaspaceSize=N : Metaspace 초기 사이즈 설정
- -XX:MaxMetaspaceSize=N : Metaspace 최대 사이즈 설정
더 공부해보자
- garbage collector가 각각의 상태에서 어떻게 일을 하는지
- young-generation
- old-generation
이 포스팅은 더 자바, Java 8 강의를 수강하며 작성되었습니다.
더 자바, Java 8 강의 | 백기선 - 인프런
백기선 | 자바 8에 추가된 기능들은 자바가 제공하는 API는 물론이고 스프링 같은 제 3의 라이브러리 및 프레임워크에서도 널리 사용되고 있습니다. 이 시대의 자바 개발자라면 반드시 알아야 합
www.inflearn.com
'Java' 카테고리의 다른 글
[Java8] 배열 병렬 정렬 (0) | 2024.09.03 |
---|---|
[Java8] Annotation의 변화 (0) | 2024.09.02 |
[Java8] CompletableFuture (0) | 2024.09.01 |
[Java8] Callable과 Future (0) | 2024.08.29 |
[Java8] Executors (0) | 2024.08.28 |