Metaspace

구름코딩·2020년 10월 11일
0

java8 _ 더 자바

목록 보기
23/23

자바 8의 변화

  • JVM의 여러 메모리 영역 중에 PermGen 메모리 영역이 없어지고 Metaspace 영역이 생겼다

기존 PermGen 메모리 영역

  • permanent generation
  • 클래스의 Meta, 메소드의 Meta, Static변수와 상수 정보들을 담는 곳이다
  • Heap영역에 속한다
  • JVM, JIT 관련 데이터
  • 기본값으로 제한된 크기를 갖고 있다
  • -XX:PermSize=N, PermGen 초기(최소) 사이즈 설정
  • -XX:MaxPermSize=N, PermGen 최대 사이즈 설정

새로운 Metaspace 영역

PerGen영역이 Metaspace영역으로 전환 후 PerGen 메모리 영역은 사라졌다

Metaspace 영역은 Heap이 아닌 Native 메모리 영역으로 취급하게 된다
(Heap 영역은 JVM에 의해 관리된 영역이며, Native 메모리는 OS 레벨에서 관리하는 영역으로 구분된다)

즉, 각종 Meta정보를 OS영역으로 옮김으로서 Perm영역의 사이즈 제한을 없앤것이라 할수 있다

  • 클래스 메타데이터를 담는곳이다
  • Heap영역이 아닌 Native 메모리 영역이다
  • 기본값으로 제한된 크기를 갖고있지 않는다 (필요한 만큼 계속 늘어남)
  • -XX:MetaspaceSize=N, Metaspace 초기 사이즈 설정
  • -XX:MaxMetaspaceSize=N, Metaspace 최대 사이즈 설정

메모리 공간 걱정을 안해도되지만 메모리 누수 등의 코드상 오류로 인해 동적으로 계속해서 메모리를 잡아먹는 부분이 있다면 OS영역의 모든 메모리를 먹을수도 있으므로 모니터링 및 적절한 최대값 설정은 필요하다

참고

java
삼성sds 참고 블로그
삼성sds 참고 블로그
pergen 글

profile
내꿈은 숲속의잠자는공주

0개의 댓글